از ابرداده فایل با Cloud Storage در وب استفاده کنید

پس از آپلود فایل در مرجع 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 حذف کنیم.