ใช้ข้อมูลเมตาของไฟล์กับ Cloud Storage บนแพลตฟอร์ม Apple

หลังจากอัปโหลดไฟล์ไปยังการอ้างอิง 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 กันเถอะ