ใช้ข้อมูลเมตาของไฟล์กับ Cloud Storage สำหรับ Unity

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

พร็อพเพอร์ตี้ข้อมูลเมตาของไฟล์

รายการพร็อพเพอร์ตี้ข้อมูลเมตาทั้งหมดในไฟล์พร้อมใช้งานที่ด้านล่าง

พร็อพเพอร์ตี้ ประเภท แก้ไขได้ใน 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