از ابرداده فایل با Cloud Storage برای C++ استفاده کنید

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