Catch up on everything we announced at this year's Firebase Summit. Learn more

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

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

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

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

เว็บรุ่น 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!
  });

เว็บรุ่น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 ปฏิเสธ

เว็บรุ่น 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!
  });

เว็บรุ่น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 :

เว็บรุ่น 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!
  });

เว็บรุ่น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 คุณสมบัติ

เว็บรุ่น 9

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

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

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