پساز بارگذاری فایل در مرجع Cloud Storage، میتوانید فراداده فایل را نیز دریافت و بهروز کنید، برای مثال برای بهروزرسانی نوع محتوا. فایلها همچنین میتوانند جفتهای کلید/مقدار سفارشی را با فرادادههای فایل اضافی ذخیره کنند.
دریافت فراداده فایل
فراداده فایل حاوی ویژگیهای رایجی مثل name، size، و
content_type (که اغلب نوع MIME نامیده میشود) و همچنین برخی ویژگیهای کمتر رایج
مثل content_disposition و time_created است. این فراداده را میتوان
از مرجع Cloud Storage بااستفاده از روش GetMetadata
بازیابی کرد.
// 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 آشنا شویم.