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