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

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

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

ข้อมูลเมตาของไฟล์ประกอบด้วยพร็อพเพอร์ตี้ทั่วไป เช่น name, size และ contentType (มักเรียกว่าประเภท MIME) นอกเหนือจากพร็อพเพอร์ตี้ที่คล้ายกัน เช่น contentDisposition และ timeCreated คุณจะดึงข้อมูลเมตานี้ได้จากข้อมูลอ้างอิงของ Cloud Storage โดยใช้เมธอด 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!
  });

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!
  });

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!
  });

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!
  });

จัดการข้อผิดพลาด

การเกิดข้อผิดพลาดขึ้นขณะได้รับหรืออัปเดตข้อมูลเมตามีอยู่หลายสาเหตุ เช่น การที่ไฟล์ไม่มีอยู่ หรือผู้ใช้ไม่มีสิทธิ์เข้าถึงไฟล์ที่ต้องการ ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดได้ในส่วนจัดการข้อผิดพลาดของเอกสาร

ข้อมูลเมตาที่กำหนดเอง

คุณระบุข้อมูลเมตาที่กำหนดเองเป็นออบเจ็กต์ที่มีพร็อพเพอร์ตี้ String ได้

Web Modular API

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

API ที่ใช้เนมสเปซในเว็บ

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

คุณใช้ข้อมูลเมตาที่กำหนดเองเพื่อจัดเก็บข้อมูลเฉพาะแอปเพิ่มเติมสำหรับแต่ละไฟล์ได้ แต่เราขอแนะนำให้ใช้ฐานข้อมูล (เช่น ฐานข้อมูลเรียลไทม์ของ Firebase) ในการจัดเก็บและซิงค์ข้อมูลประเภทนี้

พร็อพเพอร์ตี้ข้อมูลเมตาของไฟล์

รายการพร็อพเพอร์ตี้ข้อมูลเมตาทั้งหมดในไฟล์พร้อมใช้งานที่ด้านล่าง

พร็อพเพอร์ตี้ ประเภท เขียนได้
bucket string ไม่
generation string ไม่
metageneration string ไม่
fullPath string ไม่
name string ไม่
size ตัวเลข ไม่
timeCreated string ไม่
updated string ไม่
md5Hash string ใช่ เมื่ออัปโหลด ไม่มีการอัปเดตข้อมูลเมตา
cacheControl string ใช่
contentDisposition string ใช่
contentEncoding string ใช่
contentLanguage string ใช่
contentType string ใช่
customMetadata ออบเจ็กต์ที่มีการแมปสตริง->สตริง ใช่

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