Check out what’s new from Firebase at Google I/O 2022. Learn more

استخدم البيانات الوصفية للملف مع Cloud Storage على الويب

بعد تحميل ملف إلى مرجع 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 كائن يحتوي على سلسلة -> تعيينات السلسلة نعم

يعد تحميل الملفات وتنزيلها وتحديثها أمرًا مهمًا ، ولكن يمكنك أيضًا إزالتها. دعنا نتعلم كيفية حذف الملفات من التخزين السحابي.