Files & Media
अपने app से files और media store करें। हर file को एक permanent public URL मिलता है।
Proyecta में media दो layers में आती है। ज़्यादातर apps built-in CMS media capability का उपयोग करती हैं — image और file uploads जिन्हें AI आपके admin panel और forms में अपने आप जोड़ देता है। इसके नीचे, एक lower-level Files API है जो आपको ज़रूरत पड़ने पर direct control देता है। दोनों CDN-backed object storage में store होते हैं और एक permanent public URL वापस करते हैं।
Chat attachments
Section titled “Chat attachments”Chat input सीधे images स्वीकार करता है — कोई screenshot paste करें या image file को input पर drag करें। Supported formats: PNG, JPEG, WebP, GIF, AVIF। अधिकतम size: प्रति image 10 MB।
Chat attachments message का हिस्सा होते हैं, आपकी file library का नहीं। Persistent storage के लिए, built-in media uploads या Files API का उपयोग करें।
Built-in media uploads (CMS media capability)
Section titled “Built-in media uploads (CMS media capability)”ज़्यादातर apps Files API को directly नहीं छूतीं — media एक built-in CMS capability है। App template @/hooks/useContent में दो upload hooks के साथ आता है, और AI उन्हें आपके UI में wire करता है। आप बताएं कि आप क्या चाहते हैं (“मेरे products पर एक image field”, “मेरे contact form पर एक file upload”) और Proyecta सही hook का उपयोग करता है:
| Hook | कहाँ उपयोग होता है | Endpoint | Size cap |
|---|---|---|---|
useAssetUpload() |
Admin media library — admin panel के content editor में asset picker को support करता है | POST /v1/public/files |
10 MB |
useFormFileUpload() |
Public form files — <FormBlock/> file field पर visitor uploads (receipts, photos) |
POST /v1/public/uploads |
5 MB |
दोनों hooks एक permanent public url return करते हैं जिसे आप content entry (admin) या form submission (public) पर store करते हैं। कुछ ज़रूरी बातें:
- दोनों caps code में enforce होते हैं, plan से नहीं — admin media के लिए 10 MB, public form files के लिए 5 MB।
- Accepted types केवल images (SVG को छोड़कर) और PDF हैं। SVG को safety के लिए reject किया जाता है; बड़ी images को upload से पहले automatically downscale किया जाता है।
- आप इन्हें directly call नहीं करते — AI इन्हें mount करता है। Lower-level या custom file handling के लिए ही नीचे दिए Files API का उपयोग करें।
Files API
Section titled “Files API”हर published Proyecta app files store और serve कर सकता है। आपके app के pages से यह एक ही call है — multi-step signed-upload वाली प्रक्रिया आपके लिए संभाल ली जाती है:
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 files. किसी file को public bucket से बाहर, बिना permanent URL के store करने के लिए visibility: 'private' पास करें। उसे वापस पढ़ने के लिए एक short-lived link का उपयोग करें:
const { url, expiresAt } = await platform.assetSignedUrl(asset.id, { variant: 'thumbnail' });ऐसी हर चीज़ के लिए private + signed URLs का उपयोग करें जिसका अंदाज़ा न लगाया जा सके — customer uploads, ID documents, paid downloads।
मेरे app में files कैसे upload होती हैं?
Section titled “मेरे app में files कैसे upload होती हैं?”File uploads AI builder के ज़रिए handle होती हैं। AI से upload flow बनाने के लिए कहें:
"Users को profile photo upload करने दें और उसे Proyecta Files में store करें""एक image gallery जोड़ें जहाँ signed-in users अपनी photos upload और देख सकें""Orders के साथ PDF invoices attach करने की सुविधा दें"
AI आपके app code में upload wire करता है और returned public URL को reference करता है।
क्या file URLs public होते हैं?
हाँ। Files API द्वारा return की गई किसी भी file का एक permanent public URL होता है। कोई भी ऐसी चीज़ upload न करें जिसे आप expose नहीं करना चाहते।
File कितनी बड़ी हो सकती है?
File sizes plan से नहीं, code में cap होती हैं: admin media-library uploads (useAssetUpload) के लिए 10 MB, public form-file uploads (useFormFileUpload) के लिए 5 MB, और chat attachments के लिए 10 MB। Built-in media uploads केवल images (SVG को छोड़कर) और PDF स्वीकार करती हैं।
क्या मैं URL पर images को resize या crop कर सकता हूँ?
On-the-fly image transforms (resize, crop, format conversion) roadmap पर हैं।
जल्द आने वाला है
Section titled “जल्द आने वाला है”- Image transformations URL parameters के ज़रिए (resize, crop, format conversion)
- Folder organization — stored files के लिए folder paths बनाएं और manage करें