Fișiere și Media
Încarcă și gestionează fișiere din codul aplicației tale. Fiecare fișier primește un URL public permanent.
Proyecta pune la dispoziție un Files API prin SDK pentru gestionarea programatică a fișierelor din codul aplicației tale.
Atașamente în chat
Section titled “Atașamente în chat”Câmpul de chat acceptă imagini direct — lipește un screenshot sau trage un fișier imagine în câmp. Formate acceptate: PNG, JPEG, WebP, GIF, AVIF. Dimensiune maximă: 10 MB per imagine.
Atașamentele din chat fac parte din mesaj, nu din biblioteca ta de fișiere. Pentru stocare persistentă, folosește SDK-ul.
Files API (SDK)
Section titled “Files API (SDK)”Orice aplicație Proyecta publicată are acces la un API de stocare a fișierelor prin Proyecta SDK. SDK-ul suportă operațiunile de listare, obținere și încărcare a fișierelor. Fișierele încărcate primesc un URL public permanent pe care îl poți referenția din aplicația ta.
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 populatedFiecare fișier conține:
| Câmp | Descriere |
|---|---|
id | Identificator unic (șir numeric de tip snowflake) |
url | URL public permanent (populat după pasul de finalizare) |
filename | Numele original al fișierului la încărcare |
mime_type | image/jpeg, application/pdf, etc. |
size | Dimensiunea în octeți |
path | Cale de folder opțională (ex. /images/blog) |
content_hash | SHA-256 al conținutului fișierului |
metadata | Metadate arbitrare cheie/valoare |
created | Timestamp de creare în format ISO 8601 |
updated | Timestamp ultima actualizare în format ISO 8601 |
Cum se încarcă fișierele în aplicația mea?
Section titled “Cum se încarcă fișierele în aplicația mea?”Încărcarea fișierelor este gestionată prin AI builder. Cere AI-ului să construiască fluxul de upload pentru tine:
"Permite utilizatorilor să încarce o fotografie de profil și să o stocheze în Proyecta Files""Adaugă o galerie de imagini unde utilizatorii autentificați pot încărca și vizualiza fotografiile lor""Permite atașarea facturilor PDF la comenzi"
AI-ul configurează upload-ul în codul aplicației tale folosind API-ul de upload în doi pași din SDK și referențiază URL-ul public returnat. Poți apela și direct files.create() / files.finalize() din propriul cod al aplicației.
Întrebări frecvente
Section titled “Întrebări frecvente”URL-urile fișierelor sunt publice?
Da. Orice fișier returnat de Files API are un URL public permanent. Nu încărca nimic ce nu dorești să fie expus public.
Cât de mare poate fi un fișier?
Limitele per fișier depind de planul tău. Atașamentele din chat sunt limitate la 10 MB per imagine.
Pot redimensiona sau decupa imagini direct din URL?
Transformările de imagini în timp real (redimensionare, decupare, conversie de format) se află pe roadmap.
În curând
Section titled “În curând”- Transformări de imagini prin parametri URL (redimensionare, decupare, conversie de format)
- Organizare în foldere — creează și gestionează căi de foldere din panou
- „Add to Chat” dintr-un rând de fișier, pentru ca elementele din bibliotecă să poată fi introduse în conversația cu AI-ul