Sari la conținut

Fișiere și Media

Stochează fișiere și media din aplicația ta. Fiecare fișier primește un URL public permanent.

Media în Proyecta vine în două straturi. Majoritatea aplicațiilor folosesc capacitatea media integrată în CMS — încărcări de imagini și fișiere pe care AI-ul le conectează automat în panoul tău de administrare și în formulare. Dedesubt, un API pentru fișiere de nivel inferior îți oferă control direct atunci când ai nevoie. Ambele stochează în object storage cu suport CDN și returnează un URL public permanent.

Câmpul de chat acceptă imagini direct — lipește un screenshot sau trage un fișier imagine în câmpul de introducere. 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 încărcările media integrate sau API-ul pentru fișiere.

Încărcări media integrate (capacitatea media din CMS)

Secțiune intitulată „Încărcări media integrate (capacitatea media din CMS)”

Majoritatea aplicațiilor nu folosesc direct API-ul pentru fișiere — media este o capacitate integrată a CMS. Șablonul de aplicație include două hook-uri de încărcare în @/hooks/useContent, iar AI-ul le conectează în interfața ta. Descrii ce dorești („un câmp de imagine la produsele mele“, „un câmp de încărcare fișier în formularul meu de contact“) și Proyecta îl folosește pe cel potrivit:

Hook Unde este folosit Endpoint Limită dimensiune
useAssetUpload() Biblioteca media din admin — alimentează selectorul de resurse din editorul de conținut al panoului de administrare POST /v1/public/files 10 MB
useFormFileUpload() Fișiere din formulare publice — încărcări ale vizitatorilor pe un câmp de fișier <FormBlock/> (chitanțe, fotografii) POST /v1/public/uploads 5 MB

Ambele hook-uri returnează un url public permanent pe care îl stochezi în intrarea de conținut (admin) sau în trimiterea formularului (public). Câteva lucruri de știut:

  • Ambele limite sunt aplicate în cod, nu prin plan — 10 MB pentru media admin, 5 MB pentru fișierele din formulare publice.
  • Tipurile acceptate sunt imagini (cu excepția SVG) și PDF. SVG este respins din motive de securitate; imaginile mari sunt redimensionate automat înainte de încărcare.
  • Nu le apelezi direct — AI-ul le montează. Folosește API-ul pentru fișiere de mai jos doar pentru gestionarea fișierelor de nivel inferior sau personalizată.

Orice aplicație publicată în Proyecta poate stoca și servi fișiere. Din paginile aplicației tale, acesta este un singur apel — dansul în mai mulți pași cu încărcarea semnată este gestionat pentru tine:

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);

Fișiere private. Transmite visibility: 'private' pentru a stoca un fișier în afara bucket-ului public, fără URL permanent. Îl citești înapoi cu un link de scurtă durată:

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

Folosește fișiere private + URL-uri semnate pentru orice nu ar trebui să poată fi ghicit — încărcări ale clienților, acte de identitate, descărcări plătite.

Încărcările de fișiere sunt gestionate prin AI builder. Cere AI-ului să construiască fluxul de încărcare pentru tine:

  • "Permite utilizatorilor să încarce o fotografie de profil și stocheaz-o î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 conectează încărcarea în codul aplicației tale și face referire la URL-ul public returnat.

URL-urile fișierelor sunt publice?

Da. Orice fișier returnat de API-ul pentru fișiere are un URL public permanent. Nu încărca nimic ce nu dorești să fie expus.

Cât de mare poate fi un fișier?

Dimensiunile fișierelor sunt limitate prin cod, nu prin plan: 10 MB pentru încărcările în biblioteca media din admin (useAssetUpload), 5 MB pentru încărcările de fișiere din formulare publice (useFormFileUpload) și 10 MB pentru atașamentele din chat. Încărcările media integrate acceptă imagini (cu excepția SVG) și PDF.

Pot redimensiona sau decupa imagini din URL?

Transformările de imagini la cerere (redimensionare, decupare, conversie de format) se află pe foaia de parcurs.

  • Transformări de imagini prin parametri URL (redimensionare, decupare, conversie de format)
  • Organizare în foldere — crearea și gestionarea căilor de foldere pentru fișierele stocate