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

پس از آپلود فایل در مرجع Cloud Storage، همچنین می توانید متادیتای فایل را دریافت یا به روز کنید، به عنوان مثال برای به روز رسانی نوع محتوا. فایل‌ها همچنین می‌توانند جفت‌های کلید/مقدار سفارشی را با فراداده فایل اضافی ذخیره کنند.

فراداده فایل را دریافت کنید

فراداده فایل حاوی ویژگی‌های رایجی مانند name ، size ، و contentType (که اغلب به عنوان نوع MIME نامیده می‌شود) علاوه بر برخی موارد کمتر رایج مانند contentDisposition و timeCreated . این ابرداده را می توان با استفاده از متد 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!
  });

رسیدگی به خطاها

دلایل متعددی وجود دارد که ممکن است هنگام دریافت یا به‌روزرسانی فراداده، از جمله فایل موجود نباشد یا کاربر اجازه دسترسی به فایل مورد نظر را نداشته باشد، خطا رخ دهد. اطلاعات بیشتر در مورد خطاها را می توانید در بخش Handle Errors در اسناد پیدا کنید.

فراداده سفارشی

می‌توانید ابرداده‌های سفارشی را به‌عنوان یک شی حاوی ویژگی‌های 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 ) برای ذخیره و همگام‌سازی این نوع داده‌ها استفاده کنید.

ویژگی های فراداده فایل

لیست کاملی از ویژگی های ابرداده در یک فایل در زیر موجود است:

ویژگی تایپ کنید قابل نوشتن
bucket رشته نه
generation رشته نه
metageneration رشته نه
fullPath رشته نه
name رشته نه
size عدد نه
timeCreated رشته نه
updated رشته نه
md5Hash رشته بله در آپلود، خیر در updateMetadata
cacheControl رشته آره
contentDisposition رشته آره
contentEncoding رشته آره
contentLanguage رشته آره
contentType رشته آره
customMetadata شیء حاوی نگاشت رشته-> رشته آره

آپلود، دانلود و به‌روزرسانی فایل‌ها مهم است، اما حذف آنها نیز مهم است. بیایید یاد بگیریم که چگونه فایل ها را از فضای ذخیره سازی ابری حذف کنیم .