ใช้ข้อมูลเมตาของไฟล์กับ Cloud Storage บน Flutter

หลังจากอัปโหลดไฟล์ไปยังข้อมูลอ้างอิงของ Cloud Storage คุณยังจะได้รับ และอัปเดตข้อมูลเมตาของไฟล์ เช่น เพื่อดูหรืออัปเดตประเภทเนื้อหา Files ยังสามารถจัดเก็บคู่คีย์/ค่าที่กำหนดเองพร้อมกับข้อมูลเมตาเพิ่มเติมของไฟล์ได้อีกด้วย

รับข้อมูลเมตาของไฟล์

ข้อมูลเมตาของไฟล์มีพร็อพเพอร์ตี้ทั่วไป เช่น 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