Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

بعد تحميل ملف إلى مرجع Cloud Storage ، يمكنك أيضًا الحصول على البيانات الوصفية للملف أو تحديثها ، على سبيل المثال لتحديث نوع المحتوى. يمكن للملفات أيضًا تخزين أزواج مفتاح / قيمة مخصصة مع بيانات تعريف إضافية للملفات.

احصل على البيانات الوصفية للملف

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

خصائص ملف البيانات الوصفية

تتوفر قائمة كاملة بخصائص البيانات الوصفية في ملف أدناه:

ملكية يكتب قابل للكتابة
bucket خيط لا
generation خيط لا
metageneration خيط لا
fullPath خيط لا
name خيط لا
size رقم لا
timeCreated خيط لا
updated خيط لا
md5Hash خيط نعم عند التحميل ، لا عند التحديث البيانات الوصفية
cacheControl خيط نعم
contentDisposition خيط نعم
contentEncoding خيط نعم
contentLanguage خيط نعم
contentType خيط نعم
customMetadata كائن يحتوي على سلسلة -> تعيينات السلسلة نعم

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