بعد تحميل ملف إلى مرجع التخزين السحابي، يمكنك أيضًا الحصول على البيانات التعريفية للملف وتحديثها، على سبيل المثال لعرض نوع المحتوى أو تحديثه. يمكن للملفات أيضًا تخزين أزواج المفاتيح/القيم المخصصة مع بيانات تعريف الملف الإضافية.
الحصول على البيانات الوصفية للملف
تحتوي البيانات التعريفية للملف على خصائص شائعة مثل name
و size
و contentType
(يُشار إليها غالبًا بنوع MIME) بالإضافة إلى بعض الخصائص الأقل شيوعًا مثل contentDisposition
و timeCreated
. يمكن استرداد هذه البيانات التعريفية من مرجع التخزين السحابي باستخدام طريقة getMetadata()
.
Kotlin+KTX
// 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+KTX
// 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+KTX
// 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+KTX
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> | لا |
من المهم تحميل الملفات وتنزيلها وتحديثها، ولكن من المهم أيضًا القدرة على إزالتها. دعونا نتعلم كيفية حذف الملفات من التخزين السحابي.