Filer & Media
Lagra filer och media från din app. Varje fil får en permanent publik URL.
Media i Proyecta finns i två lager. De flesta appar använder den inbyggda CMS-mediafunktionen — bild- och filuppladdningar som AI:n kopplar in i ditt adminpanel och formulär åt dig. Under det ger ett lägre-nivå Files API dig direkt kontroll när du behöver det. Båda lagrar till CDN-stödd objektlagring och returnerar en permanent publik URL.
Chattbilagor
Section titled “Chattbilagor”Chattinmatningen accepterar bilder direkt — klistra in en skärmbild eller dra en bildfil till inmatningsfältet. Format som stöds: PNG, JPEG, WebP, GIF, AVIF. Maximal storlek: 10 MB per bild.
Chattbilagor är en del av meddelandet, inte ditt filbibliotek. För beständig lagring använder du de inbyggda mediauppladdningarna eller Files API:et.
Inbyggda mediauppladdningar (CMS-mediafunktionen)
Section titled “Inbyggda mediauppladdningar (CMS-mediafunktionen)”De flesta appar rör inte Files API direkt — media är en inbyggd CMS-funktion. Appmallen levereras med två uppladdningshookar i @/hooks/useContent, och AI:n kopplar in dem i ditt gränssnitt. Du beskriver vad du vill ha (“ett bildfält på mina produkter”, “en filuppladdning på mitt kontaktformulär”) och Proyecta använder rätt en:
| Hook | Var den används | Endpoint | Storleksgräns |
|---|---|---|---|
useAssetUpload() |
Adminens mediabibliotek — driver tillgångsväljaren i adminpanelens innehållsredigerare | POST /v1/public/files |
10 MB |
useFormFileUpload() |
Publika formulärfiler — besökarens uppladdningar i ett <FormBlock/>-filefält (kvitton, foton) |
POST /v1/public/uploads |
5 MB |
Båda hookarna returnerar en permanent publik url som du lagrar på innehållsposten (admin) eller formulärinlämningen (publik). Några saker att känna till:
- Båda gränserna tillämpas i koden, inte per plan — 10 MB för adminmedia, 5 MB för publika formulärfiler.
- Accepterade typer är bilder (utom SVG) och PDF. SVG avvisas av säkerhetsskäl; stora bilder skalas automatiskt ned före uppladdning.
- Du anropar inte dessa direkt — AI:n monterar dem. Använd Files API:et nedan endast för lägre-nivå eller anpassad filhantering.
Files API
Section titled “Files API”Varje publicerad Proyecta-app kan lagra och servera filer. Från din apps sidor är det ett enda anrop — den flerstegs-dans med signerade uppladdningar sköts åt dig:
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);Privata filer. Skicka med visibility: 'private' för att lagra en fil utanför den publika bucketen, utan permanent URL. Läs tillbaka den med en kortlivad länk istället:
const { url, expiresAt } = await platform.assetSignedUrl(asset.id, { variant: 'thumbnail' });Använd privat lagring plus signerade URL:er för allt som inte ska gå att gissa sig till — kunduppladdningar, ID-handlingar, betalda nedladdningar.
Hur laddas filer upp till min app?
Section titled “Hur laddas filer upp till min app?”Filuppladdningar hanteras via AI-byggaren. Be AI:n bygga uppladdningsflödet åt dig:
"Låt användare ladda upp ett profilfoto och lagra det i Proyecta Files""Lägg till ett bildgalleri där inloggade användare kan ladda upp och visa sina foton""Låt mig bifoga PDF-fakturor till beställningar"
AI:n kopplar upp uppladdningen i din appkod och refererar till den returnerade publika URL:en.
Vanliga frågor
Section titled “Vanliga frågor”Är fil-URL:erna publika?
Ja. Alla filer som returneras av Files API har en permanent publik URL. Ladda inte upp något du inte vill ska vara tillgängligt.
Hur stor kan en fil vara?
Filstorlekarna begränsas i koden, inte per plan: 10 MB för adminens mediabiblioteksuppladdningar (useAssetUpload), 5 MB för publika formulärfilsuppladdningar (useFormFileUpload) och 10 MB för chattbilagor. Inbyggda mediauppladdningar accepterar bilder (utom SVG) och PDF.
Kan jag ändra storlek på eller beskära bilder via URL:en?
Bildtransformationer i realtid (ändra storlek, beskärning, formatkonvertering) finns på roadmapen.
Kommer snart
Section titled “Kommer snart”- Bildtransformationer via URL-parametrar (ändra storlek, beskärning, formatkonvertering)
- Mapporganisering — skapa och hantera mappsökvägar för lagrade filer