ওয়েবে 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 স্ট্রিং নরওয়ে (KO)
generation স্ট্রিং নরওয়ে (KO)
metageneration স্ট্রিং নরওয়ে (KO)
fullPath স্ট্রিং নরওয়ে (KO)
name স্ট্রিং নরওয়ে (KO)
size নম্বর নরওয়ে (KO)
timeCreated স্ট্রিং নরওয়ে (KO)
updated স্ট্রিং নরওয়ে (KO)
md5Hash স্ট্রিং আপলোডের ক্ষেত্রে হ্যাঁ, updateMetadata-এর ক্ষেত্রে না
cacheControl স্ট্রিং হ্যাঁ
contentDisposition স্ট্রিং হ্যাঁ
contentEncoding স্ট্রিং হ্যাঁ
contentLanguage স্ট্রিং হ্যাঁ
contentType স্ট্রিং হ্যাঁ
customMetadata স্ট্রিং->স্ট্রিং ম্যাপিং সহ অবজেক্ট হ্যাঁ

ফাইল আপলোড, ডাউনলোড ও আপডেট করা গুরুত্বপূর্ণ, তবে সেগুলি সরিয়ে দেওয়ার ক্ষমতাও গুরুত্বপূর্ণ। Cloud Storage থেকে কীভাবে ফাইল মুছতে হয় তা জেনে নেওয়া যাক।