שימוש במטא-נתונים של קבצים ב-Cloud Storage באינטרנט

אחרי העלאת קובץ להפניה Cloud Storage, אפשר גם לקבל או לעדכן את המטא-נתונים של הקובץ, למשל כדי לעדכן את סוג התוכן. בקובצים אפשר גם לאחסן צמדי מפתח/ערך בהתאמה אישית עם מטא-נתונים נוספים של הקובץ.

אחזור מטא-נתונים של קובץ

המטא-נתונים של הקובץ מכילים מאפיינים נפוצים כמו 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 מחרוזת כן בהעלאה, לא בעדכון המטא-נתונים
cacheControl מחרוזת כן
contentDisposition מחרוזת כן
contentEncoding מחרוזת כן
contentLanguage מחרוזת כן
contentType מחרוזת כן
customMetadata אובייקט שמכיל מיפויים של מחרוזת ל-string כן

חשוב להעלות, להוריד ולעדכן קבצים, אבל חשוב גם שתוכלו להסיר אותם. עכשיו נלמד איך למחוק קבצים מ-Cloud Storage.