بعد تحميل ملف إلى مرجع Cloud Storage، يمكنك أيضًا الحصول على وتعديل البيانات الوصفية للملف، مثلاً لتعديل نوع المحتوى Files من Google أيضًا تخزين أزواج المفتاح/القيمة المخصصة مع بيانات وصفية إضافية للملفات.
الحصول على البيانات الوصفية للملف
تحتوي البيانات الوصفية للملفات على سمات شائعة، مثل 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 |
ثابت حرف* | لا |
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::ect<std::string> | لا |
custom_metadata |
std::map<std::string, std::string> | نعم |
الخطوات التالية
إن تحميل الملفات وتنزيلها وتحديثها أمر مهم، وكذلك القدرة على لإزالتها. لنتعلم كيفية حذف الملفات ابتداءً من Cloud Storage