پس از آپلود فایل در مرجع 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 حذف کنیم.