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