Dateien & Medien
Dateien und Medien aus deiner App speichern. Jede Datei erhält eine permanente öffentliche URL.
Medien in Proyecta bestehen aus zwei Ebenen. Die meisten Apps nutzen die integrierte CMS-Medienfunktion – Bild- und Datei-Uploads, die die KI automatisch in dein Admin-Panel und deine Formulare einbindet. Darunter gibt es eine untergeordnete Files API, die dir direkte Kontrolle gibt, wenn du sie brauchst. Beide speichern in CDN-gesichertem Object Storage und liefern eine permanente öffentliche URL zurück.
Chat-Anhänge
Abschnitt betitelt „Chat-Anhänge“Die Chat-Eingabe akzeptiert Bilder direkt – füge einen Screenshot ein oder ziehe eine Bilddatei auf das Eingabefeld. Unterstützte Formate: PNG, JPEG, WebP, GIF, AVIF. Maximale Größe: 10 MB pro Bild.
Chat-Anhänge sind Teil der Nachricht, nicht deiner Datei-Bibliothek. Für persistente Speicherung verwende die integrierten Medien-Uploads oder die Files API.
Integrierte Medien-Uploads (die CMS-Medienfunktion)
Abschnitt betitelt „Integrierte Medien-Uploads (die CMS-Medienfunktion)“Die meisten Apps greifen nicht direkt auf die Files API zu – Medien sind eine integrierte CMS-Funktion. Das App-Template liefert zwei Upload-Hooks in @/hooks/useContent, und die KI bindet sie in deine UI ein. Du beschreibst, was du möchtest („ein Bildfeld bei meinen Produkten“, „ein Datei-Upload in meinem Kontaktformular“), und Proyecta verwendet den jeweils passenden:
| Hook | Verwendung | Endpoint | Größenlimit |
|---|---|---|---|
useAssetUpload() |
Admin-Medienbibliothek – unterstützt die Asset-Auswahl im Content-Editor des Admin-Panels | POST /v1/public/files |
10 MB |
useFormFileUpload() |
Öffentliche Formulardateien – Besucher-Uploads in einem <FormBlock/>-Dateifeld (Belege, Fotos) |
POST /v1/public/uploads |
5 MB |
Beide Hooks geben eine permanente öffentliche url zurück, die du am Content-Eintrag (Admin) oder der Formularübermittlung (öffentlich) speicherst. Ein paar wichtige Hinweise:
- Beide Größenlimits werden im Code erzwungen, nicht durch den Plan – 10 MB für Admin-Medien, 5 MB für öffentliche Formulardateien.
- Akzeptiert werden nur Bilder (außer SVG) und PDF. SVG wird aus Sicherheitsgründen abgelehnt; große Bilder werden vor dem Upload automatisch verkleinert.
- Du rufst diese Hooks nicht direkt auf – die KI bindet sie ein. Greife auf die Files API unten nur für untergeordnete oder maßgeschneiderte Dateiverarbeitung zurück.
Die Files API
Abschnitt betitelt „Die Files API“Jede veröffentlichte Proyecta-App kann Dateien speichern und ausliefern. Aus den Seiten deiner App ist das ein einziger Aufruf – den mehrstufigen Tanz mit signierten Upload-URLs übernimmt die Plattform für dich:
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);Private Dateien. Übergib visibility: 'private', um eine Datei außerhalb des öffentlichen Buckets und ohne permanente URL zu speichern. Lies sie stattdessen über einen kurzlebigen Link:
const { url, expiresAt } = await platform.assetSignedUrl(asset.id, { variant: 'thumbnail' });Nutze „privat + signierte URL“ für alles, was nicht erratbar sein soll – Kunden-Uploads, Ausweisdokumente, kostenpflichtige Downloads.
Wie werden Dateien in meine App hochgeladen?
Abschnitt betitelt „Wie werden Dateien in meine App hochgeladen?“Datei-Uploads werden über den KI-Builder abgewickelt. Bitte die KI, den Upload-Flow für dich zu erstellen:
"Let users upload a profile photo and store it in Proyecta Files""Add an image gallery where signed-in users can upload and view their photos""Let me attach PDF invoices to orders"
Die KI richtet den Upload in deinem App-Code ein und verweist auf die zurückgegebene öffentliche URL.
Sind die Datei-URLs öffentlich?
Ja. Jede Datei, die von der Files API zurückgegeben wird, hat eine permanente öffentliche URL. Lade nichts hoch, das du nicht öffentlich zugänglich machen möchtest.
Wie groß darf eine Datei sein?
Dateigrößen werden im Code begrenzt, nicht durch den Plan: 10 MB für Admin-Medienbibliothek-Uploads (useAssetUpload), 5 MB für öffentliche Formulardatei-Uploads (useFormFileUpload) und 10 MB für Chat-Anhänge. Integrierte Medien-Uploads akzeptieren nur Bilder (außer SVG) und PDF.
Kann ich Bilder über die URL skalieren oder zuschneiden?
On-the-fly-Bildtransformationen (Skalieren, Zuschneiden, Formatkonvertierung) stehen auf der Roadmap.
Demnächst verfügbar
Abschnitt betitelt „Demnächst verfügbar“- Bildtransformationen über URL-Parameter (Skalieren, Zuschneiden, Formatkonvertierung)
- Ordnerorganisation – Ordnerpfade für gespeicherte Dateien erstellen und verwalten