پس از آپلود فایل در مرجع Cloud Storage ، میتوانید فرادادههای فایل را نیز دریافت یا بهروزرسانی کنید، برای مثال، نوع محتوا را بهروزرسانی کنید. فایلها همچنین میتوانند جفتهای کلید/مقدار سفارشی را با فرادادههای فایل اضافی ذخیره کنند.
دریافت متادیتای فایل
فرادادههای فایل شامل ویژگیهای رایجی مانند name ، size و contentType (که اغلب به عنوان نوع MIME شناخته میشوند) علاوه بر برخی ویژگیهای کمتر رایج مانند contentDisposition و timeCreated هستند. این فرادادهها را میتوان با استفاده از متد getMetadata() از یک مرجع Cloud Storage بازیابی کرد. 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 | رشته | بله در آپلود، خیر در بهروزرسانی فراداده |
cacheControl | رشته | بله |
contentDisposition | رشته | بله |
contentEncoding | رشته | بله |
contentLanguage | رشته | بله |
contentType | رشته | بله |
customMetadata | شیء حاوی نگاشتهای رشتهای به رشتهای | بله |
آپلود، دانلود و بهروزرسانی فایلها مهم است، اما توانایی حذف آنها نیز به همان اندازه مهم است. بیایید یاد بگیریم که چگونه فایلها را از Cloud Storage حذف کنیم.