پس از آپلود فایل در مرجع ذخیرهسازی ابری، میتوانید فرادادههای فایل را نیز دریافت و بهروزرسانی کنید، برای مثال، نوع محتوا را مشاهده یا بهروزرسانی کنید. فایلها همچنین میتوانند جفتهای کلید/مقدار سفارشی را با فرادادههای فایل اضافی ذخیره کنند.
دریافت متادیتای فایل
فرادادههای فایل شامل ویژگیهای رایجی مانند name ، size و contentType (که اغلب به عنوان نوع MIME شناخته میشوند) علاوه بر برخی ویژگیهای کمتر رایج مانند contentDisposition و timeCreated هستند. این فرادادهها را میتوان با استفاده از متد getMetadata() از یک مرجع ذخیرهسازی ابری بازیابی کرد.
// Create reference to the file whose metadata we want to retrieve
final forestRef = storageRef.child("images/forest.jpg");
// Get metadata properties
final metadata = await forestRef.getMetadata();
// Metadata now contains the metadata for 'images/forest.jpg'
بهروزرسانی فراداده فایل
شما میتوانید فرادادههای فایل را در هر زمانی پس از اتمام آپلود فایل با استفاده از متد updateMetadata() بهروزرسانی کنید. برای اطلاعات بیشتر در مورد اینکه چه ویژگیهایی میتوانند بهروزرسانی شوند، به لیست کامل مراجعه کنید. فقط ویژگیهای مشخص شده در فراداده بهروزرسانی میشوند، سایر موارد بدون تغییر باقی میمانند.
// Create reference to the file whose metadata we want to change
final forestRef = storageRef.child("images/forest.jpg");
// Create file metadata to update
final newMetadata = SettableMetadata(
cacheControl: "public,max-age=300",
contentType: "image/jpeg",
);
// Update metadata properties
final metadata = await forestRef.updateMetadata(newMetadata);
// Updated metadata for 'images/forest.jpg' is returned
شما میتوانید با ارسال null ، ویژگیهای فراداده قابل نوشتن را حذف کنید:
// Delete the cacheControl property
final newMetadata = SettableMetadata(cacheControl: null);
final metadata = await forestRef.updateMetadata(newMetadata);
مدیریت خطاها
دلایل مختلفی وجود دارد که ممکن است هنگام دریافت یا بهروزرسانی متادیتا، خطا رخ دهد، از جمله وجود نداشتن فایل یا نداشتن مجوز دسترسی کاربر به فایل مورد نظر. اطلاعات بیشتر در مورد خطاها را میتوانید در بخش «مدیریت خطاها» در مستندات بیابید.
فراداده سفارشی
شما میتوانید با استفاده از پارامتر customMetadata از سازندهی SettableMetadata ، متادیتای سفارشی تعیین کنید:
// Create reference to the file whose metadata we want to change
final forestRef = storageRef.child("images/forest.jpg");
// Create file metadata to update
final newCustomMetadata = SettableMetadata(
customMetadata: {
"location": "Yosemite, CA, USA",
"activity": "Hiking",
},
);
// Update metadata properties
final metadata = await forestRef.updateMetadata(newCustomMetadata);
// Updated metadata for 'images/forest.jpg' is returned
شما میتوانید دادههای مختص برنامه را برای هر فایل در متادیتای سفارشی ذخیره کنید، اما ما اکیداً توصیه میکنیم از یک پایگاه داده (مانند Firebase Realtime Database ) برای ذخیره و همگامسازی این نوع دادهها استفاده کنید.
ویژگیهای فراداده فایل
لیست کاملی از ویژگیهای فراداده در یک فایل در زیر موجود است:
| ملک | نوع | قابل تنظیم؟ |
|---|---|---|
bucket | String | خیر |
generation | String | خیر |
metageneration | String | خیر |
metadataGeneration | String | خیر |
fullPath | String | خیر |
name | String | خیر |
size | int | خیر |
timeCreated | DateTime | خیر |
updated | DateTime | خیر |
md5Hash | String | خیر |
cacheControl | String | بله |
contentDisposition | String | بله |
contentEncoding | String | بله |
contentLanguage | String | بله |
contentType | String | بله |
customMetadata | Map<String, String> | بله |
آپلود، دانلود و بهروزرسانی فایلها مهم است، اما توانایی حذف آنها نیز به همان اندازه مهم است. بیایید یاد بگیریم که چگونه فایلها را از فضای ذخیرهسازی ابری حذف کنیم .