بعد تحميل ملف إلى مرجع التخزين السحابي، يمكنك أيضًا الحصول على البيانات التعريفية للملف أو تحديثها، على سبيل المثال لتحديث نوع المحتوى. يمكن للملفات أيضًا تخزين أزواج المفاتيح/القيم المخصصة مع بيانات تعريف الملف الإضافية.
الحصول على البيانات الوصفية للملف
تحتوي البيانات التعريفية للملف على خصائص شائعة مثل name
و size
و contentType
(يُشار إليها غالبًا بنوع MIME) بالإضافة إلى بعض الخصائص الأقل شيوعًا مثل contentDisposition
و timeCreated
. يمكن استرداد هذه البيانات التعريفية من مرجع التخزين السحابي باستخدام طريقة getMetadata()
. تقوم getMetadata()
بإرجاع Promise
يحتوي على البيانات التعريفية الكاملة، أو خطأ إذا تم رفض Promise
.
Web modular API
import { getStorage, ref, getMetadata } from "firebase/storage"; // Create a reference to the file whose metadata we want to retrieve const storage = getStorage(); const forestRef = ref(storage, 'images/forest.jpg'); // Get metadata properties getMetadata(forestRef) .then((metadata) => { // Metadata now contains the metadata for 'images/forest.jpg' }) .catch((error) => { // Uh-oh, an error occurred! });
Web namespaced API
// Create a reference to the file whose metadata we want to retrieve var forestRef = storageRef.child('images/forest.jpg'); // Get metadata properties forestRef.getMetadata() .then((metadata) => { // Metadata now contains the metadata for 'images/forest.jpg' }) .catch((error) => { // Uh-oh, an error occurred! });
تحديث بيانات تعريف الملف
يمكنك تحديث بيانات تعريف الملف في أي وقت بعد اكتمال تحميل الملف باستخدام طريقة updateMetadata()
. راجع القائمة الكاملة لمزيد من المعلومات حول الخصائص التي يمكن تحديثها. يتم تحديث الخصائص المحددة في بيانات التعريف فقط، ويتم ترك جميع الخصائص الأخرى دون تعديل. تقوم updateMetadata()
بإرجاع Promise
يحتوي على البيانات التعريفية الكاملة، أو خطأ إذا تم رفض Promise
.
Web modular API
import { getStorage, ref, updateMetadata } from "firebase/storage"; // Create a reference to the file whose metadata we want to change const storage = getStorage(); const forestRef = ref(storage, 'images/forest.jpg'); // Create file metadata to update const newMetadata = { cacheControl: 'public,max-age=300', contentType: 'image/jpeg' }; // Update metadata properties updateMetadata(forestRef, newMetadata) .then((metadata) => { // Updated metadata for 'images/forest.jpg' is returned in the Promise }).catch((error) => { // Uh-oh, an error occurred! });
Web namespaced API
// Create a reference to the file whose metadata we want to change var forestRef = storageRef.child('images/forest.jpg'); // Create file metadata to update var newMetadata = { cacheControl: 'public,max-age=300', contentType: 'image/jpeg' }; // Update metadata properties forestRef.updateMetadata(newMetadata) .then((metadata) => { // Updated metadata for 'images/forest.jpg' is returned in the Promise }).catch((error) => { // Uh-oh, an error occurred! });
يمكنك حذف خاصية البيانات التعريفية عن طريق تعيينها على null
:
Web modular API
import { getStorage, ref, updateMetadata } from "firebase/storage"; const storage = getStorage(); const forestRef = ref(storage, 'images/forest.jpg'); // Create file metadata with property to delete const deleteMetadata = { contentType: null }; // Delete the metadata property updateMetadata(forestRef, deleteMetadata) .then((metadata) => { // metadata.contentType should be null }).catch((error) => { // Uh-oh, an error occurred! });
Web namespaced API
// Create file metadata with property to delete var deleteMetadata = { contentType: null }; // Delete the metadata property forestRef.updateMetadata(deleteMetadata) .then((metadata) => { // metadata.contentType should be null }).catch((error) => { // Uh-oh, an error occurred! });
التعامل مع الأخطاء
هناك عدد من الأسباب التي قد تؤدي إلى حدوث أخطاء عند الحصول على البيانات التعريفية أو تحديثها، بما في ذلك الملف غير الموجود، أو عدم حصول المستخدم على إذن للوصول إلى الملف المطلوب. يمكن العثور على مزيد من المعلومات حول الأخطاء في قسم التعامل مع الأخطاء في المستندات.
بيانات التعريف المخصصة
يمكنك تحديد بيانات التعريف المخصصة ككائن يحتوي على خصائص String
.
Web modular API
const metadata = { customMetadata: { 'location': 'Yosemite, CA, USA', 'activity': 'Hiking' } };
Web namespaced API
var metadata = { customMetadata: { 'location': 'Yosemite, CA, USA', 'activity': 'Hiking' } };
يمكنك استخدام البيانات التعريفية المخصصة لتخزين بيانات إضافية خاصة بالتطبيق لكل ملف، لكننا نوصي بشدة باستخدام قاعدة بيانات (مثل Firebase Realtime Database ) لتخزين هذا النوع من البيانات ومزامنته.
خصائص البيانات التعريفية للملف
تتوفر قائمة كاملة بخصائص البيانات التعريفية في الملف أدناه:
ملكية | يكتب | قابل للكتابة |
---|---|---|
bucket | خيط | لا |
generation | خيط | لا |
metageneration | خيط | لا |
fullPath | خيط | لا |
name | خيط | لا |
size | رقم | لا |
timeCreated | خيط | لا |
updated | خيط | لا |
md5Hash | خيط | نعم عند التحميل، لا عند التحديث البيانات الوصفية |
cacheControl | خيط | نعم |
contentDisposition | خيط | نعم |
contentEncoding | خيط | نعم |
contentLanguage | خيط | نعم |
contentType | خيط | نعم |
customMetadata | كائن يحتوي على سلسلة->تعيينات السلسلة | نعم |
من المهم تحميل الملفات وتنزيلها وتحديثها، ولكن من المهم أيضًا القدرة على إزالتها. دعونا نتعلم كيفية حذف الملفات من التخزين السحابي.