Google is committed to advancing racial equity for Black communities. See how.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Sử dụng siêu dữ liệu tệp trên iOS

Sau khi tải tệp lên tham chiếu Cloud Storage, bạn cũng có thể lấy và cập nhật siêu dữ liệu tệp, ví dụ để cập nhật loại nội dung. Các tệp cũng có thể lưu trữ các cặp khóa / giá trị tùy chỉnh với siêu dữ liệu tệp bổ sung.

Nhận siêu dữ liệu tệp

Siêu dữ liệu tệp chứa các thuộc tính phổ biến như name , sizecontentType (thường được gọi là loại MIME) ngoài một số thuộc tính ít phổ biến hơn như contentDispositiontimeCreated . Siêu dữ liệu này có thể được truy xuất từ ​​tham chiếu Cloud Storage bằng phương thức metadataWithCompletion: .

Nhanh

// 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'
  }
}
    

Mục tiêu-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'
  }
}];
  

Cập nhật siêu dữ liệu tệp

Bạn có thể cập nhật siêu dữ liệu tệp bất cứ lúc nào sau khi quá trình tải lên tệp hoàn tất bằng cách sử dụng phương thức updateMetadata:withCompletion: . Tham khảo danh sách đầy đủ để biết thêm thông tin về những thuộc tính có thể được cập nhật. Chỉ các thuộc tính được chỉ định trong siêu dữ liệu được cập nhật, tất cả các thuộc tính khác không được sửa đổi.

Nhanh

// 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
  }
}
    

Mục tiêu-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
  }
}];
  

Bạn có thể xóa các thuộc tính siêu dữ liệu có thể ghi bằng cách chuyển chuỗi rỗng:

Mục tiêu-C

FIRStorageMetadata *newMetadata = [[FIRStorageMetadata alloc] init];
newMetadata.contentType = @"";

// 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
  }
}];

Nhanh

let newMetadata = StorageMetadata()
newMetadata.contentType = "";

// 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
  }
}

Xử lý lỗi

Có một số lý do tại sao lỗi có thể xảy ra khi nhận hoặc cập nhật siêu dữ liệu, bao gồm cả tệp không tồn tại hoặc người dùng không có quyền truy cập vào tệp mong muốn. Thông tin thêm về lỗi có thể được tìm thấy trong phần Xử lý lỗi của tài liệu.

Siêu dữ liệu tùy chỉnh

Bạn có thể chỉ định siêu dữ liệu tùy chỉnh dưới dạng NSDictionary có chứa các thuộc tính NSString .

Nhanh

let metadata = [
  "customMetadata": [
    "location": "Yosemite, CA, USA",
    "activity": "Hiking"
  ]
]
    

Mục tiêu-C

NSDictionary *metadata = @{
  @"customMetadata": @{
    @"location": @"Yosemite, CA, USA",
    @"activity": @"Hiking"
  }
};

Bạn có thể lưu trữ dữ liệu dành riêng cho ứng dụng cho từng tệp trong siêu dữ liệu tùy chỉnh, nhưng chúng tôi khuyên bạn nên sử dụng cơ sở dữ liệu (như Cơ sở dữ liệu thời gian thực Firebase ) để lưu trữ và đồng bộ hóa loại dữ liệu này.

Thuộc tính siêu dữ liệu tệp

Một danh sách đầy đủ các thuộc tính siêu dữ liệu trên một tệp có sẵn dưới đây:

Bất động sản Kiểu Có thể viết
bucket NSString KHÔNG
generation NSString KHÔNG
metageneration NSString KHÔNG
fullPath NSString KHÔNG
name NSString KHÔNG
size int64_t KHÔNG
timeCreated NSDate KHÔNG
updated NSDate KHÔNG
md5Hash NSString ĐÚNG
cacheControl NSString ĐÚNG
contentDisposition NSString ĐÚNG
contentEncoding NSString ĐÚNG
contentLanguage NSString ĐÚNG
contentType NSString ĐÚNG
downloadURLs NSArray <NSString> KHÔNG
customMetadata NSDadata <NSString, NSString> ĐÚNG

Tải lên, tải xuống và cập nhật các tập tin rất quan trọng, nhưng vì vậy có thể loại bỏ chúng. Hãy tìm hiểu cách xóa các tệp khỏi Cloud Storage.