หลังจากอัปโหลดไฟล์ไปยังข้อมูลอ้างอิงของ Cloud Storage แล้ว คุณยังสามารถรับ และอัปเดตข้อมูลเมตาของไฟล์ได้ด้วย เช่น เพื่ออัปเดตประเภทเนื้อหา นอกจากนี้ ไฟล์ยังจัดเก็บคู่คีย์/ค่าที่กำหนดเองพร้อมข้อมูลเมตาของไฟล์เพิ่มเติมได้ด้วย
รับข้อมูลเมตาของไฟล์
ข้อมูลเมตาของไฟล์มีพร็อพเพอร์ตี้ทั่วไป เช่น Name, SizeBytes และ ContentType (มักเรียกว่าประเภท MIME) นอกเหนือจากพร็อพเพอร์ตี้ที่ไม่ค่อยพบ เช่น ContentDisposition และ CreationTimeMillis คุณสามารถดึงข้อมูล
เมตานี้จากข้อมูลอ้างอิง Cloud Storage ได้โดยใช้วิธี
GetMetadataAsync
// Create reference to the file whose metadata we want to retrieve StorageReference forestRef = storageRef.Child("images/forest.jpg"); // Get metadata properties forestRef.GetMetadataAsync().ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { StorageMetadata meta = task.Result; // do stuff with meta } });
อัปเดตข้อมูลเมตาของไฟล์
คุณสามารถอัปเดตข้อมูลเมตาของไฟล์ได้ทุกเมื่อหลังจากอัปโหลดไฟล์เสร็จสมบูรณ์โดยใช้วิธี UpdateMetadataAsync ซึ่งใช้ได้กับออบเจ็กต์ MetadataChange
ดูรายการทั้งหมดเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับ
พร็อพเพอร์ตี้ที่อัปเดตได้ ระบบจะอัปเดตเฉพาะพร็อพเพอร์ตี้ที่ระบุในข้อมูลเมตา ส่วนพร็อพเพอร์ตี้อื่นๆ จะไม่เปลี่ยนแปลง
// Create reference to the file whose metadata we want to change StorageReference forestRef = storageRef.Child("images/forest.jpg"); // Create file metadata to update var newMetadata = new MetadataChange(); newMetadata.CacheControl = "public,max-age=300"; newMetadata.ContentType = "image/jpeg"; // Update metadata properties forestRef.UpdateMetadataAsync(newMetadata).ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { // access the updated meta data StorageMetadata meta = task.Result; } });
คุณสามารถลบพร็อพเพอร์ตี้ข้อมูลเมตาที่เขียนได้โดยส่งสตริงว่าง ดังนี้
// Create file metadata to update var newMetadata = new MetadataChange(); newMetadata.ContentType = ""; // Update metadata properties forestRef.UpdateMetadataAsync(newMetadata).ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { StorageMetadata meta = task.Result; // meta.ContentType should be an empty string now } });
จัดการข้อผิดพลาด
ข้อผิดพลาดอาจเกิดขึ้นเมื่อรับหรืออัปเดตข้อมูลเมตาด้วยเหตุผลหลายประการ เช่น ไฟล์ไม่มีอยู่ หรือผู้ใช้ไม่มีสิทธิ์เข้าถึงไฟล์ที่ต้องการ ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดได้ใน ส่วนจัดการข้อผิดพลาด ของเอกสาร
ข้อมูลเมตาที่กำหนดเอง
คุณระบุข้อมูลเมตาที่กำหนดเองเป็น Dictionary<string, string> ได้
var newMetadata = new MetadataChange { CustomMetadata = new Dictionary<string, string> { {"location", "Yosemite, CA, USA"}, {"activity", "Hiking"} } }; // UpdateMetadataAsync
คุณสามารถจัดเก็บข้อมูลเฉพาะของแอปสำหรับแต่ละไฟล์ในข้อมูลเมตาที่กำหนดเองได้ แต่เราขอแนะนำอย่างยิ่งให้ใช้ฐานข้อมูล (เช่น Firebase Realtime Database) เพื่อจัดเก็บและซิงค์ข้อมูลประเภทนี้
พร็อพเพอร์ตี้ข้อมูลเมตาของไฟล์
รายการพร็อพเพอร์ตี้ข้อมูลเมตาทั้งหมดในไฟล์มีดังนี้
| พร็อพเพอร์ตี้ | ประเภท | แก้ไขได้ใน MetadataChange |
|---|---|---|
Bucket |
string |
ไม่ |
Generation |
string |
ไม่ |
MetadataGeneration |
string |
ไม่ |
Path |
string |
ไม่ |
Name |
string |
ไม่ |
SizeBytes |
long |
ไม่ |
CreationTimeMillis |
long |
ไม่ |
UpdatedTimeMillis |
long |
ไม่ |
CacheControl |
string |
ใช่ |
ContentDisposition |
string |
ใช่ |
ContentEncoding |
string |
ใช่ |
ContentLanguage |
string |
ใช่ |
ContentType |
string |
ใช่ |
DownloadUrl |
Uri |
ไม่ |
DownloadUrls |
IList<Uri> |
ไม่ |
CustomMetadataKeys |
IEnumerable<string> |
ใช่ |
ขั้นตอนถัดไป
การอัปโหลด ดาวน์โหลด และอัปเดตไฟล์เป็นสิ่งสำคัญ แต่การลบไฟล์ได้ก็สำคัญเช่นกัน มาดูวิธี ลบไฟล์ จาก Cloud Storage กัน