หลังจากอัปโหลดไฟล์ไปยังข้อมูลอ้างอิง 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 |
สตริง | YES สำหรับ upload, NO สำหรับ updateMetadata |
cacheControl |
สตริง | ใช่ |
contentDisposition |
สตริง | ใช่ |
contentEncoding |
สตริง | ใช่ |
contentLanguage |
สตริง | ใช่ |
contentType |
สตริง | ใช่ |
customMetadata |
ออบเจ็กต์ที่มีการแมปสตริง->สตริง | ใช่ |
การอัปโหลด ดาวน์โหลด และอัปเดตไฟล์เป็นเรื่องสำคัญ แต่ความสามารถในการนำไฟล์ออกก็สำคัญเช่นกัน มาเรียนรู้วิธีลบไฟล์จาก Cloud Storage