بعد تحميل ملف إلى Cloud Storage مرجع، يمكنك أيضًا الحصول على أو تعديل البيانات الوصفية للملف، على سبيل المثال لتعديل نوع المحتوى. يمكن أن تخزِّن الملفات أيضًا أزواج مفاتيح/قيم مخصّصة مع بيانات وصفية إضافية للملف.
الحصول على البيانات الوصفية للملف
تحتوي البيانات الوصفية للملف على سمات شائعة مثل 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! });
معالجة الأخطاء
هناك عدد من الأسباب التي قد تؤدي إلى حدوث أخطاء عند الحصول على metadata أو تعديله، بما في ذلك عدم توفّر الملف أو عدم توفّر إذن للمستخدم بالوصول إلى الملف المطلوب. يمكنك الاطّلاع على مزيد من المعلومات حول الأخطاء في قسم معالجة الأخطاء من المستندات.
البيانات الوصفية المخصّصة
يمكنك تحديد بيانات وصفية مخصّصة كعنصر يحتوي على سمات 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.