หลังจากอัปโหลดไฟล์ไปยังการอ้างอิง 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 Realtime Database) เพื่อจัดเก็บและซิงค์ข้อมูลประเภทนี้
พร็อพเพอร์ตี้ข้อมูลเมตาของไฟล์
ดูรายการพร็อพเพอร์ตี้ข้อมูลเมตาทั้งหมดในไฟล์ได้ที่ด้านล่าง
| พร็อพเพอร์ตี้ | ประเภท | ตั้งค่าได้ | 
|---|---|---|
| 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 กัน