หลังจากอัปโหลดไฟล์ไปยังการอ้างอิง Cloud Storage แล้ว คุณยังสามารถรับและอัปเดตข้อมูลเมตาของไฟล์ได้ เช่น อัปเดตประเภทเนื้อหา ไฟล์ยังสามารถจัดเก็บคู่คีย์/ค่าที่กำหนดเองด้วยข้อมูลเมตาของไฟล์เพิ่มเติม
รับข้อมูลเมตาของไฟล์
ข้อมูลเมตาของไฟล์มีคุณสมบัติทั่วไป เช่น name
size
และ contentType
(มักเรียกว่าประเภท MIME) นอกเหนือไปจากคุณสมบัติทั่วไปบางอย่าง เช่น contentDisposition
และ timeCreated
สามารถดึงข้อมูลเมตานี้ได้จากการอ้างอิง Cloud Storage โดยใช้เมธอด metadataWithCompletion:
สวิฟต์
// Create reference to the file whose metadata we want to retrieve let forestRef = storageRef.child("images/forest.jpg") // Get metadata properties forestRef.getMetadata { metadata, error in if let error = error { // Uh-oh, an error occurred! } else { // Metadata now contains the metadata for 'images/forest.jpg' } }
วัตถุประสงค์-C
// Create reference to the file whose metadata we want to retrieve FIRStorageReference *forestRef = [storageRef child:@"images/forest.jpg"]; // Get metadata properties [forestRef metadataWithCompletion:^(FIRStorageMetadata *metadata, NSError *error) { if (error != nil) { // Uh-oh, an error occurred! } else { // Metadata now contains the metadata for 'images/forest.jpg' } }];
อัปเดตข้อมูลเมตาของไฟล์
คุณสามารถอัปเดตข้อมูลเมตาของไฟล์ได้ตลอดเวลาหลังจากอัปโหลดไฟล์เสร็จสิ้นโดยใช้เมธอด updateMetadata:withCompletion:
โปรดดู รายการทั้งหมด สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคุณสมบัติที่สามารถอัปเดตได้ เฉพาะคุณสมบัติที่ระบุในข้อมูลเมตาเท่านั้นที่ได้รับการอัพเดต ส่วนอื่นๆ ทั้งหมดจะไม่ถูกแก้ไข
สวิฟต์
// Create reference to the file whose metadata we want to change let forestRef = storageRef.child("images/forest.jpg") // Create file metadata to update let newMetadata = StorageMetadata() newMetadata.cacheControl = "public,max-age=300" newMetadata.contentType = "image/jpeg" // Update metadata properties forestRef.updateMetadata(newMetadata) { metadata, error in if let error = error { // Uh-oh, an error occurred! } else { // Updated metadata for 'images/forest.jpg' is returned } }
วัตถุประสงค์-C
// Create reference to the file whose metadata we want to change FIRStorageReference *forestRef = [storageRef child:@"images/forest.jpg"]; // Create file metadata to update FIRStorageMetadata *newMetadata = [[FIRStorageMetadata alloc] init]; newMetadata.cacheControl = @"public,max-age=300"; newMetadata.contentType = @"image/jpeg"; // Update metadata properties [forestRef updateMetadata:newMetadata completion:^(FIRStorageMetadata *metadata, NSError *error){ if (error != nil) { // Uh-oh, an error occurred! } else { // Updated metadata for 'images/forest.jpg' is returned } }];
คุณสามารถลบคุณสมบัติข้อมูลเมตาที่เขียนได้โดยตั้งค่าเป็น nil
:
วัตถุประสงค์-C
FIRStorageMetadata *newMetadata = [[FIRStorageMetadata alloc] init]; newMetadata.contentType = nil; // Delete the metadata property [forestRef updateMetadata:newMetadata completion:^(FIRStorageMetadata *metadata, NSError *error){ if (error != nil) { // Uh-oh, an error occurred! } else { // metadata.contentType should be nil } }];
สวิฟต์
let newMetadata = StorageMetadata() newMetadata.contentType = nil // Delete the metadata property forestRef.updateMetadata(newMetadata) { metadata, error in if let error = error { // Uh-oh, an error occurred! } else { // metadata.contentType should be nil } }
จัดการกับข้อผิดพลาด
มีสาเหตุหลายประการที่ทำให้เกิดข้อผิดพลาดในการรับหรืออัปเดตข้อมูลเมตา รวมถึงไฟล์ที่ไม่มีอยู่ หรือผู้ใช้ไม่ได้รับอนุญาตให้เข้าถึงไฟล์ที่ต้องการ ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดได้ในส่วน จัดการข้อผิดพลาด ของเอกสาร
ข้อมูลเมตาที่กำหนดเอง
คุณสามารถระบุข้อมูลเมตาที่กำหนดเองเป็น NSDictionary
ที่มีคุณสมบัติ NSString
สวิฟต์
let metadata = [ "customMetadata": [ "location": "Yosemite, CA, USA", "activity": "Hiking" ] ]
วัตถุประสงค์-C
NSDictionary *metadata = @{ @"customMetadata": @{ @"location": @"Yosemite, CA, USA", @"activity": @"Hiking" } };
คุณสามารถจัดเก็บข้อมูลเฉพาะแอปสำหรับแต่ละไฟล์ในข้อมูลเมตาที่กำหนดเองได้ แต่เราขอแนะนำอย่างยิ่งให้ใช้ฐานข้อมูล (เช่น Firebase Realtime Database ) เพื่อจัดเก็บและซิงโครไนซ์ข้อมูลประเภทนี้
คุณสมบัติข้อมูลเมตาของไฟล์
รายการคุณสมบัติของข้อมูลเมตาทั้งหมดในไฟล์มีอยู่ด้านล่าง:
คุณสมบัติ | พิมพ์ | เขียนได้ |
---|---|---|
bucket | สตริง | เลขที่ |
generation | สตริง | เลขที่ |
metageneration | สตริง | เลขที่ |
fullPath | สตริง | เลขที่ |
name | สตริง | เลขที่ |
size | Int64 | เลขที่ |
timeCreated | วันที่ | เลขที่ |
updated | วันที่ | เลขที่ |
md5Hash | สตริง | ใช่ |
cacheControl | สตริง | ใช่ |
contentDisposition | สตริง | ใช่ |
contentEncoding | สตริง | ใช่ |
contentLanguage | สตริง | ใช่ |
contentType | สตริง | ใช่ |
customMetadata | [สตริง: สตริง] | ใช่ |
การอัปโหลด ดาวน์โหลด และอัปเดตไฟล์เป็นสิ่งสำคัญ แต่ความสามารถในการลบออกก็เช่นกัน มาเรียนรู้วิธี ลบไฟล์ จาก Cloud Storage กันเถอะ