File & Media
Unggah dan kelola file dari kode aplikasimu. Setiap file mendapatkan URL publik permanen.
Proyecta menyediakan Files API melalui SDK untuk pengelolaan file secara terprogram dari kode aplikasimu.
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 bagian dari pustaka file-mu. Untuk penyimpanan persisten, gunakan SDK.
Files API (SDK)
Section titled “Files API (SDK)”Setiap aplikasi Proyecta yang sudah dipublikasikan memiliki akses ke API penyimpanan file melalui Proyecta SDK. SDK mendukung operasi listing, fetching, dan uploading file. File yang diunggah mendapatkan URL publik permanen yang bisa kamu referensikan dari aplikasimu.
import Proyecta from '@proyecta-ai/sdk';
const proyecta = new Proyecta({ apiKey: process.env.PROYECTA_API_KEY });
// List files (supports limit and starting_after for pagination)const files = await proyecta.files.list();
// Fetch a single file by IDconst file = await proyecta.files.get('1234567890123456789');console.log(file.url); // permanent public URL
// Upload a file (two-step)// Step 1: create a placeholder and get a signed upload URLconst { id: fileId, upload_url } = await proyecta.files.create({ filename: 'avatar.png', mime_type: 'image/png',});
// Step 2: PUT the file bytes directly to the signed URLawait fetch(upload_url, { method: 'PUT', body: fileBytes, headers: { 'Content-Type': 'image/png' },});
// Step 3: finalize to get the permanent file recordconst uploaded = await proyecta.files.finalize({ fileId });console.log(uploaded.url); // permanent public URL, now populatedSetiap file memiliki field berikut:
| Field | Deskripsi |
|---|---|
id | Pengenal unik (string snowflake numerik) |
url | URL publik permanen (terisi setelah langkah finalize) |
filename | Nama file asli saat diunggah |
mime_type | image/jpeg, application/pdf, dan lain-lain |
size | Ukuran dalam byte |
path | Path folder opsional (contoh: /images/blog) |
content_hash | SHA-256 dari isi file |
metadata | Metadata key/value bebas |
created | Timestamp pembuatan dalam format ISO 8601 |
updated | Timestamp pembaruan terakhir dalam format ISO 8601 |
Bagaimana cara file diunggah ke aplikasiku?
Section titled “Bagaimana cara file diunggah ke aplikasiku?”Unggah file ditangani melalui AI builder. Minta AI untuk membangun alur upload untukmu:
"Biarkan pengguna mengunggah foto profil dan simpan di Proyecta Files""Tambahkan galeri gambar tempat pengguna yang sudah masuk dapat mengunggah dan melihat foto mereka""Izinkan saya melampirkan faktur PDF ke pesanan"
AI akan menyambungkan alur upload di kode aplikasimu menggunakan two-step upload API dari SDK dan mereferensikan URL publik yang dikembalikan. Kamu juga bisa memanggil files.create() / files.finalize() secara langsung dari kode aplikasimu sendiri.
Apakah URL file bersifat publik?
Ya. Setiap file yang dikembalikan oleh Files API memiliki URL publik permanen. Jangan unggah sesuatu yang tidak ingin kamu ekspos.
Seberapa besar file yang bisa diunggah?
Batas per file bergantung pada paketmu. Lampiran chat dibatasi hingga 10 MB per gambar.
Bisakah saya mengubah ukuran atau memotong gambar melalui URL?
Transformasi gambar secara on-the-fly (resize, crop, konversi format) sudah ada di roadmap.
Segera hadir
Section titled “Segera hadir”- Transformasi gambar melalui parameter URL (resize, crop, konversi format)
- Organisasi folder — buat dan kelola path folder di panel
- “Add to Chat” dari baris file, sehingga aset dari pustaka bisa langsung dimasukkan ke percakapan AI