بعد تحميل ملف إلى مرجع Cloud Storage، يمكنك أيضًا الحصول على البيانات الوصفية للملف وتعديلها ، مثلاً لعرض نوع المحتوى أو تعديله. يمكن للملفات أيضًا تخزين أزواج مخصّصة من المفاتيح والقيم مع بيانات وصفية إضافية للملف.
الحصول على البيانات الوصفية للملف
تحتوي البيانات الوصفية للملف على خصائص شائعة مثل name وsize وcontentType (يُشار إليها غالبًا باسم نوع MIME) بالإضافة إلى بعض الخصائص الأقل شيوعًا مثل contentDisposition وtimeCreated. يمكن استرداد هذه البيانات الوصفية من مرجع Cloud Storage باستخدام طريقة getMetadata().
Kotlin
// Create a storage reference from our app val storageRef = storage.reference // Get reference to the file val forestRef = storageRef.child("images/forest.jpg")
forestRef.metadata.addOnSuccessListener { metadata -> // Metadata now contains the metadata for 'images/forest.jpg' }.addOnFailureListener { // Uh-oh, an error occurred! }
Java
// Create a storage reference from our app StorageReference storageRef = storage.getReference(); // Get reference to the file StorageReference forestRef = storageRef.child("images/forest.jpg");
forestRef.getMetadata().addOnSuccessListener(new OnSuccessListener<StorageMetadata>() { @Override public void onSuccess(StorageMetadata storageMetadata) { // Metadata now contains the metadata for 'images/forest.jpg' } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Uh-oh, an error occurred! } });
تعديل البيانات الوصفية للملف
يمكنك تعديل البيانات الوصفية للملف في أي وقت بعد اكتمال تحميل الملف باستخدام طريقة updateMetadata(). يُرجى الرجوع إلى الـ
قائمة الكاملة لمزيد من المعلومات حول الخصائص التي
يمكن تعديلها. لا يتم تعديل سوى الخصائص المحدّدة في البيانات الوصفية، بينما تظل جميع الخصائص الأخرى بدون تغيير.
Kotlin
// Create a storage reference from our app val storageRef = storage.reference // Get reference to the file val forestRef = storageRef.child("images/forest.jpg")
// Create file metadata including the content type val metadata = storageMetadata { contentType = "image/jpg" setCustomMetadata("myCustomProperty", "myValue") } // Update metadata properties forestRef.updateMetadata(metadata).addOnSuccessListener { updatedMetadata -> // Updated metadata is in updatedMetadata }.addOnFailureListener { // Uh-oh, an error occurred! }
Java
// Create a storage reference from our app StorageReference storageRef = storage.getReference(); // Get reference to the file StorageReference forestRef = storageRef.child("images/forest.jpg");
// Create file metadata including the content type StorageMetadata metadata = new StorageMetadata.Builder() .setContentType("image/jpg") .setCustomMetadata("myCustomProperty", "myValue") .build(); // Update metadata properties forestRef.updateMetadata(metadata) .addOnSuccessListener(new OnSuccessListener<StorageMetadata>() { @Override public void onSuccess(StorageMetadata storageMetadata) { // Updated metadata is in storageMetadata } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Uh-oh, an error occurred! } });
يمكنك حذف خصائص البيانات الوصفية القابلة للكتابة عن طريق تمرير null:
Kotlin
// Create file metadata with property to delete val metadata = storageMetadata { contentType = null } // Delete the metadata property forestRef.updateMetadata(metadata).addOnSuccessListener { updatedMetadata -> // updatedMetadata.contentType should be null }.addOnFailureListener { // Uh-oh, an error occurred! }
Java
// Create file metadata with property to delete StorageMetadata metadata = new StorageMetadata.Builder() .setContentType(null) .build(); // Delete the metadata property forestRef.updateMetadata(metadata) .addOnSuccessListener(new OnSuccessListener<StorageMetadata>() { @Override public void onSuccess(StorageMetadata storageMetadata) { // metadata.contentType should be null } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception exception) { // Uh-oh, an error occurred! } });
التعامل مع الأخطاء
هناك عدد من الأسباب التي قد تؤدي إلى حدوث أخطاء عند الحصول على البيانات الوصفية أو تعديلها، بما في ذلك عدم توفّر الملف أو عدم حصول المستخدم على إذن للوصول إلى الملف المطلوب. يمكنك الاطّلاع على مزيد من المعلومات حول الأخطاء في قسم التعامل مع الأخطاء في المستندات.
البيانات الوصفية المخصّصة
يمكنك تحديد بيانات وصفية مخصّصة باستخدام طريقة setCustomMetadata() في فئة StorageMetadata.Builder.
Kotlin
val metadata = storageMetadata { setCustomMetadata("location", "Yosemite, CA, USA") setCustomMetadata("activity", "Hiking") }
Java
StorageMetadata metadata = new StorageMetadata.Builder() .setCustomMetadata("location", "Yosemite, CA, USA") .setCustomMetadata("activity", "Hiking") .build();
يمكنك تخزين بيانات خاصة بالتطبيق لكل ملف في البيانات الوصفية المخصّصة، ولكن ننصح بشدة باستخدام قاعدة بيانات (مثل Firebase Realtime Database) لتخزين هذا النوع من البيانات ومزامنته.
خصائص البيانات الوصفية للملف
في ما يلي قائمة كاملة بخصائص البيانات الوصفية لملف:
| إرجاع قيمة الخصائص | النوع | توفُّر أداة الضبط |
|---|---|---|
getBucket |
String |
لا |
getGeneration |
String |
لا |
getMetadataGeneration |
String |
لا |
getPath |
String |
لا |
getName |
String |
لا |
getSizeBytes |
long |
لا |
getCreationTimeMillis |
long |
لا |
getUpdatedTimeMillis |
long |
لا |
getMd5Hash |
String |
لا |
getCacheControl |
String |
نعم |
getContentDisposition |
String |
نعم |
getContentEncoding |
String |
نعم |
getContentLanguage |
String |
نعم |
getContentType |
String |
نعم |
getCustomMetadata |
String |
نعم |
getCustomMetadataKeys |
Set<String> |
لا |
إنّ تحميل الملفات وتنزيلها وتعديلها مهم، ولكن من المهم أيضًا أن تكون قادرًا على إزالتها. لنتعرّف على كيفية حذف الملفات من Cloud Storage.