پساز بارگذاری فایل در مرجع 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 |
const char* | نه |
generation |
const char* | نه |
metageneration |
const char* | نه |
full_path |
const char* | نه |
name |
const char* | نه |
size |
int64_t | نه |
time_created |
int64_t | نه |
updated |
int64_t | نه |
cache_control |
const char* | بله |
content_disposition |
const char* | بله |
content_encoding |
const char* | بله |
content_language |
const char* | بله |
content_type |
const char* | بله |
download_urls |
std::vector<std::string> | نه |
custom_metadata |
std::map<std::string, std::string> | بله |
مراحل بعدی
بارگذاری، بارگیری، و بهروزرسانی فایلها مهم است، اما توانایی برداشتن آنها نیز مهم است. بیایید با نحوه حذف فایلها از Cloud Storage آشنا شویم.