หลังจากอัปโหลดไฟล์ไปยังการอ้างอิงใน Cloud Storage แล้ว คุณจะดูและอัปเดตข้อมูลเมตาของไฟล์ได้ด้วย เช่น เพื่อดูหรืออัปเดตประเภทเนื้อหา นอกจากนี้ ไฟล์ยังจัดเก็บคู่คีย์/ค่าที่กำหนดเองพร้อมข้อมูลเมตาของไฟล์เพิ่มเติมได้ด้วย
รับข้อมูลเมตาของไฟล์
ข้อมูลเมตาของไฟล์มีพร็อพเพอร์ตี้ทั่วไป เช่น name
, size
และ contentType
(มักเรียกว่าประเภท MIME) นอกเหนือจากพร็อพเพอร์ตี้ที่พบไม่บ่อยนัก เช่น contentDisposition
และ timeCreated
ข้อมูลเมตานี้สามารถดึงมาจากข้อมูลอ้างอิง Cloud Storage โดยใช้เมธอด getMetadata()
// Create reference to the file whose metadata we want to retrieve
final forestRef = storageRef.child("images/forest.jpg");
// Get metadata properties
final metadata = await forestRef.getMetadata();
// Metadata now contains the metadata for 'images/forest.jpg'
อัปเดตข้อมูลเมตาของไฟล์
คุณสามารถอัปเดตข้อมูลเมตาของไฟล์ได้ทุกเมื่อหลังจากอัปโหลดไฟล์เสร็จสมบูรณ์โดยใช้วิธีการ updateMetadata()
ดูข้อมูลเพิ่มเติมเกี่ยวกับพร็อพเพอร์ตี้ที่อัปเดตได้ได้จากรายการทั้งหมด ระบบจะอัปเดตเฉพาะพร็อพเพอร์ตี้ที่ระบุไว้ในข้อมูลเมตาเท่านั้น ส่วนพร็อพเพอร์ตี้อื่นๆ ทั้งหมดจะไม่มีการแก้ไข
// Create reference to the file whose metadata we want to change
final forestRef = storageRef.child("images/forest.jpg");
// Create file metadata to update
final newMetadata = SettableMetadata(
cacheControl: "public,max-age=300",
contentType: "image/jpeg",
);
// Update metadata properties
final metadata = await forestRef.updateMetadata(newMetadata);
// Updated metadata for 'images/forest.jpg' is returned
คุณลบพร็อพเพอร์ตี้ข้อมูลเมตาที่เขียนได้โดยการส่ง null
ดังนี้
// Delete the cacheControl property
final newMetadata = SettableMetadata(cacheControl: null);
final metadata = await forestRef.updateMetadata(newMetadata);
จัดการข้อผิดพลาด
ข้อผิดพลาดที่อาจเกิดขึ้นเมื่อรับหรืออัปเดตข้อมูลเมตามีได้หลายสาเหตุ เช่น ไฟล์ไม่อยู่ หรือผู้ใช้ไม่มีสิทธิ์เข้าถึงไฟล์ที่ต้องการ ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดได้ในส่วนจัดการข้อผิดพลาดของเอกสาร
ข้อมูลเมตาที่กำหนดเอง
คุณสามารถระบุข้อมูลเมตาที่กำหนดเองได้โดยใช้พารามิเตอร์ customMetadata
ของคอนสตรัคเตอร์ SettableMetadata
ดังนี้
// Create reference to the file whose metadata we want to change
final forestRef = storageRef.child("images/forest.jpg");
// Create file metadata to update
final newCustomMetadata = SettableMetadata(
customMetadata: {
"location": "Yosemite, CA, USA",
"activity": "Hiking",
},
);
// Update metadata properties
final metadata = await forestRef.updateMetadata(newCustomMetadata);
// Updated metadata for 'images/forest.jpg' is returned
คุณสามารถจัดเก็บข้อมูลที่เจาะจงแอปสำหรับแต่ละไฟล์ในข้อมูลเมตาที่กำหนดเองได้ แต่เราขอแนะนำอย่างยิ่งให้ใช้ฐานข้อมูล (เช่น ฐานข้อมูลเรียลไทม์ของ Firebase) เพื่อจัดเก็บและซิงค์ข้อมูลประเภทนี้
พร็อพเพอร์ตี้ข้อมูลเมตาของไฟล์
รายการพร็อพเพอร์ตี้ข้อมูลเมตาทั้งหมดในไฟล์มีดังนี้
พร็อพเพอร์ตี้ | ประเภท | ตั้งค่าได้ไหม |
---|---|---|
bucket |
String |
ไม่ |
generation |
String |
ไม่ใช่ |
metageneration |
String |
ไม่ใช่ |
metadataGeneration |
String |
ไม่ใช่ |
fullPath |
String |
ไม่ใช่ |
name |
String |
ไม่ใช่ |
size |
int |
ไม่ใช่ |
timeCreated |
DateTime |
ไม่ใช่ |
updated |
DateTime |
ไม่ใช่ |
md5Hash |
String |
ไม่ได้ |
cacheControl |
String |
ใช่ |
contentDisposition |
String |
ใช่ |
contentEncoding |
String |
ใช่ |
contentLanguage |
String |
ใช่ |
contentType |
String |
ใช่ |
customMetadata |
Map<String, String> |
ใช่ |
การอัปโหลด ดาวน์โหลด และอัปเดตไฟล์เป็นเรื่องสำคัญ แต่ความสามารถในการนำไฟล์ออกก็สำคัญเช่นกัน มาเรียนรู้วิธีลบไฟล์จาก Cloud Storage กัน