پس از آپلود فایل در مرجع Cloud Storage ، میتوانید فرادادههای فایل را نیز دریافت و بهروزرسانی کنید، برای مثال، نوع محتوا را بهروزرسانی کنید. فایلها همچنین میتوانند جفتهای کلید/مقدار سفارشی را با فرادادههای فایل اضافی ذخیره کنند.
دریافت متادیتای فایل
فرادادههای فایل شامل ویژگیهای رایجی مانند name ، size و content_type (که اغلب به عنوان نوع MIME شناخته میشوند) علاوه بر برخی ویژگیهای کمتر رایج مانند content_disposition و time_created هستند. این فرادادهها را میتوان با استفاده از متد GetMetadata از یک مرجع Cloud Storage بازیابی کرد.
// Create reference to the file whose metadata we want to retrieve StorageReference forest_ref = storage_ref.Child("images/forest.jpg"); // Get metadata properties Futurefuture = forest_ref.GetMetadata(); // Wait for Future to complete... if (future.Error() != firebase::storage::kErrorNone) { // Uh-oh, an error occurred! } else { // We can now retrieve the metadata for 'images/forest.jpg' Metadata* metadata = future.Result(); }
بهروزرسانی فراداده فایل
شما میتوانید فرادادههای فایل را در هر زمانی پس از اتمام آپلود فایل با استفاده از متد UpdateMetadata بهروزرسانی کنید. برای اطلاعات بیشتر در مورد ویژگیهایی که میتوانند بهروزرسانی شوند، به لیست کامل مراجعه کنید. فقط ویژگیهای مشخص شده در فراداده بهروزرسانی میشوند، سایر موارد بدون تغییر باقی میمانند.
// Create reference to the file whose metadata we want to change firebase::storage::StorageReference forest_ref = storage_ref.child("images/forest.jpg"); // Create file metadata to update Metadata new_metadata; newMetadata.set_cache_control("public,max-age=300"); newMetadata.set_content_type("image/jpeg"); // Update metadata properties Futurefuture = forest_ref.UpdateMetadata(new_metadata); // Wait for Future to complete... if (future.Error() != firebase::storage::kErrorNone) { // Uh-oh, an error occurred! } else { // We can now retrieve the updated metadata for 'images/forest.jpg' Metadata* metadata = future.Result(); }
شما میتوانید با ارسال رشته خالی، ویژگیهای فراداده قابل نوشتن را حذف کنید:
// Create file metadata with property to delete StorageMetadata new_metadata; new_metadata.set_content_type(""); // Delete the metadata property Futurefuture = forest_ref.UpdateMetadata(new_metadata); // Wait for Future to complete... if (future.Error() != 0) { // Uh-oh, an error occurred! } else { // metadata.content_type() should be an empty string Metadata* metadata = future.Result(); }
مدیریت خطاها
دلایل مختلفی وجود دارد که ممکن است هنگام دریافت یا بهروزرسانی متادیتا، خطا رخ دهد، از جمله وجود نداشتن فایل یا نداشتن مجوز دسترسی کاربر به فایل مورد نظر. اطلاعات بیشتر در مورد خطاها را میتوانید در بخش «مدیریت خطاها» در مستندات بیابید.
فراداده سفارشی
شما میتوانید متادیتای سفارشی را به عنوان یک std::map حاوی ویژگیهای std::string تعیین کنید.
std::map<std::string, std::string>* custom_metadata = metadata.custom_metadata(); custom_metadata->insert(std::make_pair("location", "Yosemite, CA, USA"); custom_metadata->insert(std::make_pair("activity", "Hiking");
شما میتوانید دادههای مختص برنامه را برای هر فایل در متادیتای سفارشی ذخیره کنید، اما ما اکیداً توصیه میکنیم از یک پایگاه داده (مانند Firebase Realtime Database ) برای ذخیره و همگامسازی این نوع دادهها استفاده کنید.
ویژگیهای فراداده فایل
لیست کاملی از ویژگیهای فراداده در یک فایل در زیر موجود است:
| ملک | نوع | قابل نوشتن |
|---|---|---|
bucket | کاراکتر ثابت* | خیر |
generation | کاراکتر ثابت* | خیر |
metageneration | کاراکتر ثابت* | خیر |
full_path | کاراکتر ثابت* | خیر |
name | کاراکتر ثابت* | خیر |
size | int64_t | خیر |
time_created | int64_t | خیر |
updated | int64_t | خیر |
cache_control | کاراکتر ثابت* | بله |
content_disposition | کاراکتر ثابت* | بله |
content_encoding | کاراکتر ثابت* | بله |
content_language | کاراکتر ثابت* | بله |
content_type | کاراکتر ثابت* | بله |
download_urls | بردار std::string | خیر |
custom_metadata | std::map<std::string, std::string> | بله |
مراحل بعدی
آپلود، دانلود و بهروزرسانی فایلها مهم است، اما توانایی حذف آنها نیز به همان اندازه مهم است. بیایید یاد بگیریم که چگونه فایلها را از Cloud Storage حذف کنیم.