หลังจากอัปโหลดไฟล์ไปยังการอ้างอิง Cloud Storage แล้ว คุณยังสามารถรับหรืออัปเดตข้อมูลเมตาของไฟล์ได้ เช่น อัปเดตประเภทเนื้อหา ไฟล์ยังสามารถจัดเก็บคู่คีย์/ค่าที่กำหนดเองด้วยข้อมูลเมตาของไฟล์เพิ่มเติม
รับข้อมูลเมตาของไฟล์
ข้อมูลเมตาของไฟล์มีคุณสมบัติทั่วไป เช่น 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! });
Web namespaced 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! });
Web namespaced 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! });
Web namespaced 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' } };
Web namespaced API
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 กันเถอะ