コンテンツにスキップ

ファイルとメディア

アプリからファイルやメディアを保存できます。すべてのファイルは永続的な公開URLを持ちます。

Proyectaにおけるメディアは2つの層で構成されています。ほとんどのアプリは組み込みのCMSメディア機能を使用します — AIが管理パネルやフォームに自動的に組み込む、画像やファイルのアップロード機能です。その下の層には、必要に応じて直接操作できる低レベルなFiles APIが用意されています。いずれもCDNバックのオブジェクトストレージに保存され、永続的な公開URLを返します。

チャット入力欄には画像を直接添付できます — スクリーンショットをペーストするか、画像ファイルをドラッグ&ドロップしてください。対応フォーマット:PNG、JPEG、WebP、GIF、AVIF。最大サイズ:1枚あたり10 MB

チャットへの添付ファイルはメッセージの一部であり、ファイルライブラリには保存されません。永続的なストレージが必要な場合は、組み込みのメディアアップロードまたはFiles APIをご利用ください。

組み込みのメディアアップロード(CMSメディア機能)

Section titled “組み込みのメディアアップロード(CMSメディア機能)”

ほとんどのアプリはFiles APIを直接扱いません — メディアはCMSの組み込み機能です。アプリテンプレートには@/hooks/useContentに2つのアップロードフックが含まれており、AIがUIに組み込みます。やりたいことを説明するだけで(「商品に画像フィールドを追加したい」「お問い合わせフォームにファイルアップロードを追加したい」など)、Proyectaが適切なフックを選んで使用します:

フック 用途 エンドポイント サイズ上限
useAssetUpload() 管理者メディアライブラリ — 管理パネルのコンテンツエディターにあるアセットピッカーのバックエンド POST /v1/public/files 10 MB
useFormFileUpload() 公開フォームファイル — <FormBlock/>のファイルフィールドを通じた訪問者のアップロード(領収書、写真など) POST /v1/public/uploads 5 MB

どちらのフックも、コンテンツエントリ(管理者)またはフォーム送信データ(公開)に保存するための永続的な公開urlを返します。注意点がいくつかあります:

  • いずれの上限もプランではなくコードで適用されます — 管理者メディアは10 MB、公開フォームファイルは5 MB。
  • 受け付けるファイル形式は画像(SVGを除く)とPDFのみです。 SVGはセキュリティ上の理由で拒否されます。大きな画像はアップロード前に自動的に縮小されます。
  • これらのフックを直接呼び出す必要はありません — AIが組み込みます。低レベルまたは独自のファイル操作が必要な場合のみ、以下のFiles APIを使用してください。

公開されたすべてのProyectaアプリはファイルを保存・配信できます。アプリのページからは1回の呼び出しで完結し、署名付きアップロードの多段階の手順は自動的に処理されます。

import * as platform from '@/lib/platformClient.ts';
// Upload straight from a file input — one call, no signed-URL juggling
async function onPick(file: File) {
const asset = await platform.assetDirectUpload({
blob: file,
filename: file.name,
mimeType: file.type,
});
console.log(asset.url); // permanent public URL
}
// List what's stored
const { assets, hasMore } = await platform.assetList({ limit: 20 });
// Remove one
await platform.assetDelete(asset.id);

非公開ファイル。 visibility: 'private' を指定すると、公開バケットの外に永続URLなしで保存されます。読み出しには短時間だけ有効なリンクを使用します。

const { url, expiresAt } = await platform.assetSignedUrl(asset.id, { variant: 'thumbnail' });

推測されては困るもの(顧客のアップロード、身分証明書、有料ダウンロードなど)には、非公開+署名付きURLを使用してください。

ファイルはどのようにアプリにアップロードされますか?

Section titled “ファイルはどのようにアプリにアップロードされますか?”

ファイルのアップロードはAI builderを通じて処理されます。AIにアップロードフローの構築を依頼してください:

  • "ユーザーがプロフィール写真をアップロードしてProyecta Filesに保存できるようにしたい"
  • "ログインユーザーが写真をアップロードして閲覧できる画像ギャラリーを追加したい"
  • "注文にPDFの請求書を添付できるようにしたい"

AIがアップロード処理をアプリのコードに組み込み、返された公開URLを参照します。

ファイルのURLは公開されますか?

はい。Files APIが返すすべてのファイルには永続的な公開URLがあります。公開したくないファイルはアップロードしないようにしてください。

ファイルサイズの上限はありますか?

ファイルサイズはプランではなくコードで制限されています:管理者メディアライブラリのアップロード(useAssetUpload)は10 MB、公開フォームファイルのアップロード(useFormFileUpload)は5 MB、チャットへの添付ファイルは10 MBです。組み込みのメディアアップロードは画像(SVGを除く)とPDFのみ受け付けます。

URLから画像のリサイズやクロップはできますか?

オンザフライの画像変換(リサイズ、クロップ、フォーマット変換)はロードマップに含まれています。

  • URLパラメーター経由の画像変換(リサイズ、クロップ、フォーマット変換)
  • フォルダー管理 — 保存ファイルのフォルダーパスの作成と管理