หลังจากอัปโหลดไฟล์ไปยังการอ้างอิง 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 กันเถอะ