بعد تحميل ملف إلى مرجع 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 | كائن يحتوي على سلسلة -> تعيينات السلسلة | نعم |
يعد تحميل الملفات وتنزيلها وتحديثها أمرًا مهمًا ، ولكن يمكنك أيضًا إزالتها. دعنا نتعلم كيفية حذف الملفات من التخزين السحابي.