بعد تحميل ملف إلى مرجع Cloud Storage ، يمكنك أيضًا الحصول على البيانات الوصفية للملف أو تحديثها ، على سبيل المثال لتحديث نوع المحتوى. يمكن للملفات أيضًا تخزين أزواج مفتاح / قيمة مخصصة مع بيانات تعريف إضافية للملفات.
احصل على البيانات الوصفية للملف
تحتوي البيانات الأولية للملف على خصائص عامة مثل name
size
ونوع contentType
(يشار إليه غالبًا باسم نوع MIME) بالإضافة إلى بعض العناصر الأقل شيوعًا مثل contentDisposition
timeCreated
. يمكن استرداد هذه البيانات الوصفية من مرجع Cloud Storage باستخدام طريقة getMetadata()
. getMetadata()
يحتوي على البيانات الوصفية الكاملة ، أو يعرض خطأ إذا Promise
Promise
Web version 9
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 version 8
// 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 version 9
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 version 8
// 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 version 9
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 version 8
// 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 version 9
const metadata = { customMetadata: { 'location': 'Yosemite, CA, USA', 'activity': 'Hiking' } };
Web version 8
var metadata = { customMetadata: { 'location': 'Yosemite, CA, USA', 'activity': 'Hiking' } };
يمكنك استخدام البيانات الوصفية المخصصة لتخزين بيانات إضافية خاصة بالتطبيق لكل ملف ، لكننا نوصي بشدة باستخدام قاعدة بيانات (مثل قاعدة بيانات Firebase Realtime ) لتخزين ومزامنة هذا النوع من البيانات.
خصائص ملف البيانات الوصفية
تتوفر قائمة كاملة بخصائص البيانات الوصفية في ملف أدناه:
خاصية | يكتب | قابل للكتابة |
---|---|---|
bucket | سلسلة | رقم |
generation | سلسلة | رقم |
metageneration | سلسلة | رقم |
fullPath | سلسلة | رقم |
name | سلسلة | رقم |
size | رقم | رقم |
timeCreated | سلسلة | رقم |
updated | سلسلة | رقم |
md5Hash | سلسلة | نعم عند التحميل ، لا عند التحديث البيانات الوصفية |
cacheControl | سلسلة | نعم |
contentDisposition | سلسلة | نعم |
contentEncoding | سلسلة | نعم |
contentLanguage | سلسلة | نعم |
contentType | سلسلة | نعم |
customMetadata | كائن يحتوي على سلسلة -> تعيينات السلسلة | نعم |
يعد تحميل الملفات وتنزيلها وتحديثها أمرًا مهمًا ، ولكن يمكنك أيضًا إزالتها. دعنا نتعلم كيفية حذف الملفات من التخزين السحابي.