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

หลังจากอัปโหลดไฟล์ไปยังข้อมูลอ้างอิงของ 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 ออบเจ็กต์ที่มีการแมปสตริง -> สตริง ได้

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