بعد تحميل ملف إلى Cloud Storage مرجع، يمكنك أيضًا الحصول على وتعديل البيانات الوصفية للملف، على سبيل المثال لتعديل نوع المحتوى. يمكن أن تخزِّن الملفات أيضًا أزواج مفاتيح/قيم مخصّصة مع بيانات وصفية إضافية للملف.
الحصول على البيانات الوصفية للملف
تحتوي البيانات الوصفية للملف على سمات شائعة مثل name
وsize
وcontent_type
(يُشار إليها غالبًا باسم نوع MIME) بالإضافة إلى بعض السمات
الأقل شيوعًا مثل content_disposition
وtime_created
. يمكن retrievingthis metadata
من مرجع Cloud Storage باستخدام GetMetadata
method.
// 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(); }
معالجة الأخطاء
هناك عدد من الأسباب التي قد تؤدي إلى حدوث أخطاء عند الحصول على metadata أو تعديله، بما في ذلك عدم توفّر الملف أو عدم توفّر إذن للمستخدم بالوصول إلى الملف المطلوب. يمكنك الاطّلاع على مزيد من المعلومات حول الأخطاء في قسم معالجة الأخطاء من المستندات.
البيانات الوصفية المخصّصة
يمكنك تحديد بيانات وصفية مخصّصة على أنّها 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.