หลังจากอัปโหลดไฟล์ไปยังข้อมูลอ้างอิง 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