ใช้ข้อมูลเมตาของไฟล์กับ Cloud Storage บนเว็บ

หลังจากอัปโหลดไฟล์ไปยังข้อมูลอ้างอิง Cloud Storage แล้ว คุณยังรับหรืออัปเดตข้อมูลเมตาของไฟล์ได้ เช่น เพื่ออัปเดตประเภทเนื้อหา ไฟล์ยังสามารถจัดเก็บคู่คีย์/ค่าที่กำหนดเองด้วยข้อมูลเมตาของไฟล์เพิ่มเติม

รับข้อมูลเมตาของไฟล์

ข้อมูลเมตาของไฟล์มีคุณสมบัติทั่วไป เช่น name , size และ contentType (มักเรียกว่า MIME type) นอกเหนือจากคุณสมบัติทั่วไปเช่น contentDisposition และ timeCreated ดึงข้อมูลเมตานี้ได้จากการอ้างอิง Cloud Storage โดยใช้วิธี getMetadata() getMetadata() ส่งคืน Promise ที่มีข้อมูลเมตาทั้งหมด หรือข้อผิดพลาดหาก Promise ปฏิเสธ

Web version 9

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 version 8

// 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 version 9

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 version 8

// 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 version 9

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 version 8

// 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 version 9

const metadata = {
  customMetadata: {
    'location': 'Yosemite, CA, USA',
    'activity': 'Hiking'
  }
};

Web version 8

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 ออบเจ็กต์ที่มีสตริง -> การแมปสตริง ใช่

การอัปโหลด ดาวน์โหลด และอัปเดตไฟล์มีความสำคัญ แต่ก็สามารถลบออกได้ มาเรียนรู้วิธี ลบไฟล์ ออกจาก Cloud Storage กันเถอะ