المقدمة
قم بتحميل وإدارة الملفات في التخزين السحابي مع تحسين تلقائي.
مزيد من المعلومات حول واجهة مستخدم الوحدة https://doc.oneentry.cloud/docs/attributes/types/#File
🎯 ماذا تفعل هذه الوحدة؟
تتيح لك وحدة FileUploading تحميل واسترجاع وحذف الملفات في تخزين OneEntry السحابي - الصور، PDF، الفيديوهات، المستندات، أي نوع من الملفات - مع تحسين تلقائي للصور وتوصيل عبر CDN.
فكر في الأمر كمدير تخزين سحابي خاص بك - تقوم بتحميل الملفات مرة واحدة، وOneEntry يخزنها، ويحسن الصور تلقائيًا، ويقدمها بسرعة عبر CDN.
🚀 البدء السريع
قم بتهيئة الوحدة من defineOneEntry:
const { FileUploading } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
قم بتحميل ملف واقرأ رابط التنزيل المعاد:
// upload() returns an ARRAY of uploaded files (IUploadingReturn[]).
const uploaded = await FileUploading.upload(file, {
entity: "product",
id: 123,
type: "image",
compress: true,
});
const { filename, downloadLink, size } = uploaded[0];
console.log(downloadLink); // use in <img>, <a>, <video>
لاحقًا، احذفه بواسطة اسم الملف (الكيان/المعرف يحل مجلد التخزين):
await FileUploading.delete(filename, { entity: "product", id: 123 });
✨ المفاهيم الأساسية
ما هو تحميل الملفات؟
تحميل الملفات هو تخزين الملفات في التخزين السحابي والحصول على رابط CDN دائم:
- تحميل - إرسال
FileأوBlobإلى سحابة OneEntry - التخزين - يتم تخزين الملفات، وتنظيمها بواسطة
entity→id→filename - CDN - توصيل سريع من الخوادم القريبة من المستخدمين
- التحسين - يمكن ضغط الصور تلقائيًا وإعادة حجمها
- الرابط -
downloadLinkفي الاستجابة هو الرابط الدائم
أنواع الملفات المدعومة
يتم قبول أي نوع من الملفات. فقط الصور يتم تحسينها تلقائيًا؛ كل شيء آخر يتم تخزينه كما هو.
| الفئة | أنواع الملفات | التحسين التلقائي |
|---|---|---|
| الصور | JPG، PNG، GIF، WebP، SVG | نعم (إعادة الحجم، ضغط) |
| المستندات | PDF، DOC، DOCX، XLS، XLSX | لا (يتم تخزينه كما هو) |
| الفيديوهات | MP4، MOV، AVI، WebM | لا (يتم تخزينه كما هو) |
| الأرشيفات | ZIP، RAR، TAR، GZ | لا (يتم تخزينه كما هو) |
| أخرى | أي نوع من الملفات | لا (يتم تخزينه كما هو) |
📋 ما تحتاج إلى معرفته
معلمات التحميل
upload(file, fileQuery?) تأخذ الملف بالإضافة إلى كائن استعلام اختياري:
await FileUploading.upload(file, {
entity: 'product', // Storage folder name (optional, any string)
id: 123, // Entity ID (optional)
type: 'image', // Folder/type hint (optional, any string)
width: 1920, // Max width for images (optional)
height: 1080, // Max height for images (optional)
compress: true, // Compress images (optional)
});
file— الـFileأوBlobالذي سيتم تحميله (من إدخال أو سحب وإفلات)entity— اسم المجلد الحر في التخزين (مثلproduct،page،user،editor— أمثلة، ليست تعداد ثابت)id— معرف الكيان لربط الملف بهtype— سلسلة تلميح نوع/مجلد حرةwidth/height— الأبعاد القصوى للصور (يتم الحفاظ على نسبة العرض إلى الارتفاع)compress— تمكين ضغط الصور
استجابة التحميل
upload() تحل إلى مصفوفة من IUploadingReturn. كل عنصر يحتوي على:
{
filename: "uploads/abc123-photo.jpg", // Filename with relative path
downloadLink: "https://cdn.../photo.jpg", // CDN URL
size: 204800, // File size in bytes
contentType: "image/png", // MIME type
}
downloadLink— استخدم هذا الرابط في علامات<img>،<a>،<video>filename— احفظه لحذف الملف لاحقًاsize— حجم الملف بالبايت
تحسين الصور
بالنسبة للصور يمكنك تمرير width، height، وcompress. نسبة العرض إلى الارتفاع محفوظة دائمًا — يتم إعادة حجم الصورة لتناسب داخل الحدود المعطاة، دون تمدد.
حذف الملفات
مرر اسم الملف أولاً؛ الكيان/المعرف/النوع يعيش في كائن الاستعلام الاختياري الذي يحل مجلد التخزين:
await FileUploading.delete('abc123-photo.jpg', {
entity: 'product',
id: productId,
});
استرجاع ملف
getFile(id, type, entity, filename, template?) تعيد كائن Response خام (ليس JSON محلل) — اتصل بـ .blob()، .arrayBuffer()، إلخ حسب الحاجة.
بناء ملف من رابط URL
createFileFromUrl(url, filename, mimeType?) يجلب موردًا بعيدًا ويعيد File للمتصفح، مفيد لإعادة تحميل صورة بعيدة موجودة.
📊 جدول مرجع سريع - الطرق
| الطريقة | ماذا تفعل | متى تستخدم |
|---|---|---|
| upload() | تحميل ملف إلى التخزين السحابي | يقوم المستخدم بتحميل صورة، مستند |
| getFile() | جلب الملف (كائن Response خام) | تنزيل ملف مخزن |
| delete() | حذف ملف من التخزين | إزالة الملفات القديمة |
| createFileFromUrl() | بناء File من رابط بعيد | استيراد صورة بعيدة قبل التحميل |
جميع الطرق عامة — لا حاجة لتفويض المستخدم.
❓ الأسئلة الشائعة (FAQ)
ما هي أنواع الملفات التي يمكنني تحميلها؟
أي نوع من الملفات. فقط الصور يتم تحسينها تلقائيًا (إعادة الحجم/ضغط)؛ يتم تخزين الملفات الأخرى كما هي.
ما هو الحد الأقصى لحجم الملف؟
يعتمد ذلك على حدود خطة OneEntry الخاصة بك. قم بتحسين الصور قبل التحميل للحفاظ على الأحجام منخفضة.
هل يتم تخزين الملفات بشكل دائم؟
نعم — تبقى الملفات حتى تقوم بإزالتها باستخدام FileUploading.delete(). تبقى الملفات في التخزين حتى إذا تم حذف الكيان المرتبط، لذا قم بتنظيفها بشكل صريح.
هل يمكنني الحصول على قائمة بجميع الملفات المحملة لكائن؟
ليس مباشرة عبر هذه SDK. تتبع قيم filename التي تحصل عليها من upload() (مثل حفظها في قاعدة بياناتك) لإدارة الملفات لاحقًا.
هل يمكنني إعادة حجم الصور إلى أبعاد دقيقة؟
لا — يتم الحفاظ على نسبة العرض إلى الارتفاع دائمًا. width/height تحدد صندوقًا محيطًا يتم ملاءمة الصورة داخله، مما يمنع التشويه.
🎓 أفضل الممارسات
- تحقق من نوع الملف وحجمه قبل استدعاء
upload(). - مرر
entity/idبحيث يتم تنظيم الملفات حسب الكيان في التخزين. - قم بتمكين
compressللصور على الويب. - احفظ
filenameالمعاد حتى تتمكن منdelete()الملف لاحقًا. - قم بتنظيف الملفات غير المستخدمة بشكل صريح — فهي تبقى بعد حذف الكيان.
- تعامل مع أخطاء التحميل باستخدام try/catch وتحقق من شكل إرجاع
IError.
🔗 الوثائق ذات الصلة
- وحدة المنتجات - تحميل صور المنتجات
- وحدة FormsData - يتم تحميل حقول الملفات من خلال هذه الوحدة عند الإرسال
- وحدة المستخدمين - تحميل صور ملفات تعريف المستخدمين
- وحدة الصفحات - تحميل ملفات محتوى الصفحات