דלגו לתוכן

קבצים ומדיה

אחסן קבצים ומדיה מהאפליקציה שלך. כל קובץ מקבל URL ציבורי קבוע.

המדיה ב-Proyecta מגיעה בשתי שכבות. רוב האפליקציות משתמשות ביכולת מדיה המובנית ב-CMS — העלאות תמונות וקבצים שה-AI מחבר עבורך ללוח הניהול ולטפסים. מתחת לכך, ה-Files API ברמה נמוכה יותר מעניק לך שליטה ישירה כשאתה זקוק לה. שתי השכבות מאחסנות ב-object storage מגובה CDN ומחזירות URL ציבורי קבוע.

קלט הצ’אט מקבל תמונות ישירות — הדבק צילום מסך או גרור קובץ תמונה אל תוך הקלט. פורמטים נתמכים: PNG, JPEG, WebP, GIF, AVIF. גודל מקסימלי: 10 MB לתמונה.

קבצים מצורפים לצ’אט הם חלק מההודעה, ולא מספריית הקבצים שלך. לאחסון קבוע, השתמש בהעלאות המדיה המובנות או ב-Files API.

העלאות מדיה מובנות (יכולת המדיה של CMS)

Section titled “העלאות מדיה מובנות (יכולת המדיה של CMS)”

רוב האפליקציות לא נוגעות ב-Files API ישירות — המדיה היא יכולת CMS מובנית. תבנית האפליקציה כוללת שני upload hooks ב-@/hooks/useContent, וה-AI מחבר אותם לממשק המשתמש שלך. תאר מה אתה רוצה (“שדה תמונה על המוצרים שלי”, “העלאת קובץ בטופס יצירת הקשר שלי”) ו-Proyecta ישתמש בנכון:

Hook היכן הוא משמש Endpoint מגבלת גודל
useAssetUpload() ספריית המדיה של הניהול — עומד מאחורי בוחר הנכסים בעורך התוכן של לוח הניהול POST /v1/public/files 10 MB
useFormFileUpload() קבצי טופס ציבוריים — העלאות מבקרים בשדה קובץ של <FormBlock/> (קבלות, תמונות) POST /v1/public/uploads 5 MB

שני ה-hooks מחזירים url ציבורי קבוע שאתה מאחסן על רשומת התוכן (ניהול) או הגשת הטופס (ציבורי). כמה דברים שכדאי לדעת:

  • שתי המגבלות נאכפות בקוד, ולא לפי תוכנית — 10 MB למדיה של הניהול, 5 MB לקבצי טופס ציבוריים.
  • הסוגים המתקבלים הם תמונות (למעט SVG) ו-PDF בלבד. SVG נדחה מטעמי אבטחה; תמונות גדולות מוקטנות אוטומטית לפני ההעלאה.
  • אתה לא קורא לאלה ישירות — ה-AI מתקין אותם. פנה ל-Files API שלהלן רק לטיפול בקבצים ברמה נמוכה יותר או מותאם אישית.

כל אפליקציית Proyecta מפורסמת יכולה לאחסן ולהגיש קבצים. מהדפים של האפליקציה שלך זו קריאה אחת — הריקוד הרב-שלבי של ההעלאה החתומה מטופל עבורך:

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

קבצים פרטיים. העבר visibility: 'private' כדי לאחסן קובץ מחוץ ל-bucket הציבורי, ללא URL קבוע. קרא אותו חזרה באמצעות קישור קצר-מועד במקום:

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

השתמש בפרטי + URL חתום לכל דבר שלא אמור להיות ניתן לניחוש — העלאות של לקוחות, מסמכי זיהוי, הורדות בתשלום.

כיצד קבצים מועלים לאפליקציה שלי?

Section titled “כיצד קבצים מועלים לאפליקציה שלי?”

העלאות קבצים מטופלות דרך ה-AI builder. בקש מה-AI לבנות עבורך את תהליך ההעלאה:

  • "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"

ה-AI מחבר את ההעלאה בקוד האפליקציה שלך ומפנה ל-URL הציבורי שמוחזר.

האם כתובות ה-URL של הקבצים ציבוריות?

כן. לכל קובץ שמוחזר על ידי ה-Files API יש URL ציבורי קבוע. אל תעלה דבר שאינך רוצה שיהיה חשוף.

מה הגודל המקסימלי של קובץ?

גדלי הקבצים מוגבלים בקוד, ולא לפי תוכנית: 10 MB להעלאות לספריית המדיה של הניהול (useAssetUpload), 5 MB להעלאות קבצי טופס ציבוריים (useFormFileUpload), ו-10 MB לקבצים מצורפים לצ’אט. העלאות המדיה המובנות מקבלות תמונות (למעט SVG) ו-PDF בלבד.

האם אפשר לשנות גודל או לחתוך תמונות דרך ה-URL?

טרנספורמציות תמונה בזמן אמת (שינוי גודל, חיתוך, המרת פורמט) נמצאות ב-roadmap.

  • טרנספורמציות תמונה באמצעות פרמטרי URL (שינוי גודל, חיתוך, המרת פורמט)
  • ארגון תיקיות — יצירה וניהול של נתיבי תיקיות לקבצים מאוחסנים