بعد تحميل ملف إلى مرجع 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.