File & Media
Simpan file dan media dari aplikasimu. Setiap file mendapatkan URL publik permanen.
Media di Proyecta hadir dalam dua lapisan. Sebagian besar aplikasi menggunakan kemampuan media CMS bawaan — upload gambar dan file yang dihubungkan oleh AI ke panel admin dan form untukmu. Di bawahnya, Files API tingkat rendah memberikan kontrol langsung saat kamu membutuhkannya. Keduanya menyimpan ke object storage berbasis CDN dan mengembalikan URL publik permanen.
Lampiran chat
Section titled “Lampiran chat”Input chat menerima gambar secara langsung — tempel screenshot atau seret file gambar ke input. Format yang didukung: PNG, JPEG, WebP, GIF, AVIF. Ukuran maksimum: 10 MB per gambar.
Lampiran chat adalah bagian dari pesan, bukan pustaka file-mu. Untuk penyimpanan persisten, gunakan upload media bawaan atau Files API.
Upload media bawaan (kemampuan media CMS)
Section titled “Upload media bawaan (kemampuan media CMS)”Sebagian besar aplikasi tidak menyentuh Files API secara langsung — media adalah kemampuan CMS bawaan. Template aplikasi menyertakan dua upload hook di @/hooks/useContent, dan AI menghubungkannya ke UI-mu. Kamu cukup mendeskripsikan apa yang kamu inginkan (“kolom gambar pada produk saya”, “upload file di form kontak saya”) dan Proyecta akan menggunakan yang tepat:
| Hook | Digunakan di mana | Endpoint | Batas ukuran |
|---|---|---|---|
useAssetUpload() |
Pustaka media admin — mendukung pemilih aset di editor konten admin panel | POST /v1/public/files |
10 MB |
useFormFileUpload() |
File form publik — upload oleh pengunjung pada kolom file <FormBlock/> (bukti pembayaran, foto) |
POST /v1/public/uploads |
5 MB |
Kedua hook mengembalikan url publik permanen yang kamu simpan pada entri konten (admin) atau submission form (publik). Beberapa hal yang perlu diketahui:
- Kedua batas ukuran diterapkan dalam kode, bukan berdasarkan paket — 10 MB untuk media admin, 5 MB untuk file form publik.
- Tipe yang diterima hanya gambar (kecuali SVG) dan PDF. SVG ditolak demi keamanan; gambar berukuran besar secara otomatis dikecilkan sebelum diupload.
- Kamu tidak memanggil hook ini secara langsung — AI yang menggunakannya. Gunakan Files API di bawah hanya untuk penanganan file tingkat rendah atau kustom.
Files API
Section titled “Files API”Setiap aplikasi Proyecta yang sudah dipublikasikan dapat menyimpan dan menyajikan file. Dari halaman aplikasimu, ini hanya satu panggilan — tarian signed-upload berlangkah-langkah sudah ditangani untukmu:
import * as platform from '@/lib/platformClient.ts';
// Upload straight from a file input — one call, no signed-URL jugglingasync 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 storedconst { assets, hasMore } = await platform.assetList({ limit: 20 });
// Remove oneawait platform.assetDelete(asset.id);File privat. Teruskan visibility: 'private' untuk menyimpan file di luar bucket publik tanpa URL permanen. Baca kembali dengan tautan berumur pendek sebagai gantinya:
const { url, expiresAt } = await platform.assetSignedUrl(asset.id, { variant: 'thumbnail' });Gunakan private + signed URL untuk apa pun yang tidak boleh ditebak — upload pelanggan, dokumen identitas, unduhan berbayar.
Bagaimana cara file diupload ke aplikasi saya?
Section titled “Bagaimana cara file diupload ke aplikasi saya?”Upload file ditangani melalui AI builder. Minta AI untuk membangun alur upload untukmu:
"Biarkan pengguna mengupload foto profil dan simpan di Proyecta Files""Tambahkan galeri gambar di mana pengguna yang sudah masuk dapat mengupload dan melihat foto mereka""Izinkan saya melampirkan invoice PDF ke pesanan"
AI akan menghubungkan upload di kode aplikasimu dan mereferensikan URL publik yang dikembalikan.
Apakah URL file bersifat publik?
Ya. Setiap file yang dikembalikan oleh Files API memiliki URL publik permanen. Jangan upload apa pun yang tidak ingin kamu ekspos.
Seberapa besar file yang bisa diupload?
Ukuran file dibatasi dalam kode, bukan berdasarkan paket: 10 MB untuk upload pustaka media admin (useAssetUpload), 5 MB untuk upload file form publik (useFormFileUpload), dan 10 MB untuk lampiran chat. Upload media bawaan hanya menerima gambar (kecuali SVG) dan PDF.
Bisakah saya mengubah ukuran atau memotong gambar melalui URL?
Transformasi gambar secara on-the-fly (resize, crop, konversi format) sedang dalam roadmap.
Segera hadir
Section titled “Segera hadir”- Transformasi gambar melalui parameter URL (resize, crop, konversi format)
- Organisasi folder — buat dan kelola jalur folder untuk file yang tersimpan