หลังจากอัปโหลดไฟล์ไปยังข้อมูลอ้างอิง 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 do { let metadata = try await forestRef.getMetadata() } catch { // ... }
วัตถุประสงค์-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 do { let updatedMetadata = try await forestRef.updateMetadata(newMetadata) } catch { // ... }
วัตถุประสงค์-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 do { // Delete the metadata property let updatedMetadata = try await forestRef.updateMetadata(newMetadata) } catch { // ... }
จัดการกับข้อผิดพลาด
มีสาเหตุหลายประการที่ทำให้เกิดข้อผิดพลาดในการรับหรืออัปเดตข้อมูลเมตา รวมถึงไฟล์ที่ไม่มีอยู่ หรือผู้ใช้ไม่มีสิทธิ์ในการเข้าถึงไฟล์ที่ต้องการ ข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดสามารถพบได้ในส่วน การจัดการข้อผิดพลาด ของเอกสาร
ข้อมูลเมตาที่กำหนดเอง
คุณสามารถระบุข้อมูลเมตาที่กำหนดเองเป็น NSDictionary
ที่มีคุณสมบัติ NSString
ได้
สวิฟท์
let metadata = [ "customMetadata": [ "location": "Yosemite, CA, USA", "activity": "Hiking" ] ]
วัตถุประสงค์-C
NSDictionary *metadata = @{ @"customMetadata": @{ @"location": @"Yosemite, CA, USA", @"activity": @"Hiking" } };
คุณสามารถจัดเก็บข้อมูลเฉพาะแอปสำหรับแต่ละไฟล์ในข้อมูลเมตาที่กำหนดเองได้ แต่เราขอแนะนำอย่างยิ่งให้ใช้ฐานข้อมูล (เช่น ฐานข้อมูลเรียลไทม์ Firebase ) เพื่อจัดเก็บและซิงโครไนซ์ข้อมูลประเภทนี้
คุณสมบัติข้อมูลเมตาของไฟล์
รายการคุณสมบัติข้อมูลเมตาทั้งหมดในไฟล์มีอยู่ด้านล่าง:
คุณสมบัติ | พิมพ์ | เขียนได้ |
---|---|---|
bucket | สตริง | เลขที่ |
generation | สตริง | เลขที่ |
metageneration | สตริง | เลขที่ |
fullPath | สตริง | เลขที่ |
name | สตริง | เลขที่ |
size | Int64 | เลขที่ |
timeCreated | วันที่ | เลขที่ |
updated | วันที่ | เลขที่ |
md5Hash | สตริง | ใช่ |
cacheControl | สตริง | ใช่ |
contentDisposition | สตริง | ใช่ |
contentEncoding | สตริง | ใช่ |
contentLanguage | สตริง | ใช่ |
contentType | สตริง | ใช่ |
customMetadata | [สตริง: สตริง] | ใช่ |
การอัปโหลด ดาวน์โหลด และอัปเดตไฟล์เป็นสิ่งสำคัญ แต่ก็สามารถลบไฟล์เหล่านั้นได้ด้วยเช่นกัน มาเรียนรู้วิธีการ ลบไฟล์ออก จาก Cloud Storage กันดีกว่า