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

پس از آپلود فایل در مرجع Cloud Storage، همچنین می توانید متادیتای فایل را دریافت و به روز کنید، به عنوان مثال برای به روز رسانی نوع محتوا. فایل‌ها همچنین می‌توانند جفت‌های کلید/مقدار سفارشی را با فراداده فایل اضافی ذخیره کنند.

فراداده فایل را دریافت کنید

فراداده فایل حاوی ویژگی‌های رایجی مانند name ، size ، و content_type (اغلب به عنوان نوع MIME نامیده می‌شود) علاوه بر برخی موارد کمتر رایج مانند content_disposition و time_created . این ابرداده را می توان با استفاده از روش GetMetadata از یک مرجع ذخیره سازی ابری بازیابی کرد.

// 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();
}

رسیدگی به خطاها

دلایل متعددی وجود دارد که ممکن است هنگام دریافت یا به‌روزرسانی فراداده، از جمله فایل موجود نباشد یا کاربر اجازه دسترسی به فایل مورد نظر را نداشته باشد، خطا رخ دهد. اطلاعات بیشتر در مورد خطاها را می توانید در بخش Handle Errors در اسناد پیدا کنید.

فراداده سفارشی

شما می توانید متادیتای سفارشی را به عنوان std::map حاوی ویژگی های std::string تعیین کنید.

std::map* custom_metadata = metadata.custom_metadata();
custom_metadata->insert(std::make_pair("location", "Yosemite, CA, USA");
custom_metadata->insert(std::make_pair("activity", "Hiking");

شما می توانید داده های خاص برنامه را برای هر فایل در ابرداده های سفارشی ذخیره کنید، اما ما به شدت توصیه می کنیم از یک پایگاه داده (مانند پایگاه داده بیدرنگ Firebase ) برای ذخیره و همگام سازی این نوع داده ها استفاده کنید.

ویژگی های فراداده فایل

لیست کاملی از ویژگی های ابرداده در یک فایل در زیر موجود است:

ویژگی تایپ کنید قابل نوشتن
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> آره

مراحل بعدی

آپلود، دانلود و به‌روزرسانی فایل‌ها مهم است، اما حذف آنها نیز مهم است. بیایید یاد بگیریم که چگونه فایل ها را از فضای ذخیره سازی ابری حذف کنیم .