پساز بارگذاری فایل در مرجع Cloud Storage، میتوانید فراداده فایل را نیز دریافت و بهروزرسانی کنید، برای مثال نوع محتوا را بهروز کنید. فایلها همچنین میتوانند جفتهای کلید/مقدار سفارشی را با فراداده فایل اضافی ذخیره کنند.
دریافت فراداده فایل
فراداده فایل حاوی داراییهای مشترکی مثل Name، SizeBytes، و
ContentType (که اغلب بهعنوان نوع MIME شناخته میشود) علاوهبر برخی
داراییهای کمتر رایج مثل ContentDisposition و CreationTimeMillis است. این
فراداده را میتوان بااستفاده از روش
GetMetadataAsync از مرجع Cloud Storage بازیابی کرد.
// Create reference to the file whose metadata we want to retrieve StorageReference forestRef = storageRef.Child("images/forest.jpg"); // Get metadata properties forestRef.GetMetadataAsync().ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { StorageMetadata meta = task.Result; // do stuff with meta } });
بهروزرسانی فراداده فایل
پساز تکمیل بارگذاری فایل، میتوانید فراداده فایل را در هر زمانی بااستفاده از روش UpdateMetadataAsync که شیء MetadataChange را میگیرد بهروز کنید.
برای کسب اطلاعات بیشتر درباره اینکه کدام داراییها میتوانند بهروزرسانی شوند، به فهرست کامل مراجعه کنید. فقط داراییهای مشخصشده در فراداده بهروزرسانی میشوند، همه داراییهای دیگر بدون تغییر باقی میمانند.
// Create reference to the file whose metadata we want to change StorageReference forestRef = storageRef.Child("images/forest.jpg"); // Create file metadata to update var newMetadata = new MetadataChange(); newMetadata.CacheControl = "public,max-age=300"; newMetadata.ContentType = "image/jpeg"; // Update metadata properties forestRef.UpdateMetadataAsync(newMetadata).ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { // access the updated meta data StorageMetadata meta = task.Result; } });
میتوانید داراییهای فراداده نوشتنی را با ارسال رشته خالی حذف کنید:
// Create file metadata to update var newMetadata = new MetadataChange(); newMetadata.ContentType = ""; // Update metadata properties forestRef.UpdateMetadataAsync(newMetadata).ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { StorageMetadata meta = task.Result; // meta.ContentType should be an empty string now } });
مدیریت خطاها
دلایل متعددی وجود دارد که ممکن است هنگام دریافت یا بهروزرسانی فرادادهها خطا رخ دهد، ازجمله اینکه فایل وجود ندارد یا کاربر اجازه دسترسی به فایل موردنظر را ندارد. اطلاعات بیشتر درباره خطاها را میتوانید در بخش مدیریت خطاها اسناد پیدا کنید.
فراداده سفارشی
میتوانید فراداده سفارشی را بهعنوان Dictionary<string, string> مشخص کنید.
var newMetadata = new MetadataChange { CustomMetadata = new Dictionary<string, string> { {"location", "Yosemite, CA, USA"}, {"activity", "Hiking"} } }; // UpdateMetadataAsync
میتوانید دادههای مختص برنامه را برای هر فایل در فراداده سفارشی ذخیره کنید، اما قویاً توصیه میکنیم از پایگاه داده (مثل Firebase Realtime Database) برای ذخیره و همگامسازی این نوع دادهها استفاده کنید.
ویژگیهای فراداده فایل
فهرست کامل ویژگیهای فراداده در یک فایل در زیر دردسترس است:
| دارایی | نوع | قابلتغییر در MetadataChange |
|---|---|---|
Bucket |
string |
نه |
Generation |
string |
نه |
MetadataGeneration |
string |
نه |
Path |
string |
نه |
Name |
string |
نه |
SizeBytes |
long |
نه |
CreationTimeMillis |
long |
نه |
UpdatedTimeMillis |
long |
نه |
CacheControl |
string |
بله |
ContentDisposition |
string |
بله |
ContentEncoding |
string |
بله |
ContentLanguage |
string |
بله |
ContentType |
string |
بله |
DownloadUrl |
Uri |
نه |
DownloadUrls |
IList<Uri> |
نه |
CustomMetadataKeys |
IEnumerable<string> |
بله |
مراحل بعدی
بارگذاری، بارگیری، و بهروزرسانی فایلها مهم است، اما توانایی برداشتن آنها نیز مهم است. بیایید با نحوه حذف فایلها از Cloud Storage آشنا شویم.