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

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

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

تحتوي البيانات الوصفية للملف على خصائص شائعة مثل name وsize وcontentType (يُشار إليها غالبًا باسم نوع MIME) بالإضافة إلى بعض الخصائص الأقل شيوعًا مثل contentDisposition وtimeCreated. يمكن استرجاع هذه البيانات الوصفية من مرجع Cloud Storage باستخدام طريقة getMetadata(). تعرض الدالة getMetadata() القيمة Promise التي تحتوي على اكتمال البيانات الوصفية، أو حدوث خطأ إذا تم رفض Promise.

Web

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

// 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

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

// 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

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

// 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

const metadata = {
  customMetadata: {
    'location': 'Yosemite, CA, USA',
    'activity': 'Hiking'
  }
};

Web

var metadata = {
  customMetadata: {
    'location': 'Yosemite, CA, USA',
    'activity': 'Hiking'
  }
};

يمكنك استخدام بيانات وصفية مخصصة لتخزين بيانات إضافية خاصة بالتطبيق ولكننا ننصح بشدة باستخدام قاعدة بيانات (مثل Firebase Realtime Database) لتخزين هذا النوع من البيانات ومزامنته.

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

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

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

إن تحميل الملفات وتنزيلها وتحديثها أمر مهم، وكذلك القدرة على لإزالتها. لنتعرّف على كيفية حذف الملفات من Cloud Storage.