Używanie metadanych pliku w Cloud Storage na platformach Apple

Po przesłaniu pliku do Cloud Storage możesz też pobrać i zaktualizować metadane pliku, np. aby zaktualizować typ treści. Pliki mogą też przechowywać niestandardowe pary klucz/wartość z dodatkowymi metadanymi pliku.

Pobieranie metadanych pliku

Metadane pliku zawierają typowe właściwości, takie jak name, size i contentType (często nazywany typem MIME), a także mniej typowe, takie jak contentDisposition i timeCreated. Te metadane można pobrać z Cloud Storage odwołania za pomocą metody 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'
  }
}];
  

Aktualizowanie metadanych pliku

Metadane pliku możesz zaktualizować w dowolnym momencie po zakończeniu przesyłania pliku za pomocą metody updateMetadata:withCompletion:. Więcej informacji o tym, które właściwości można zaktualizować, znajdziesz na pełnej liście. Aktualizowane są tylko właściwości określone w metadanych, a wszystkie pozostałe pozostają bez zmian.

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

Właściwości metadanych, które można zapisywać, możesz usunąć, ustawiając ich wartość na 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 {
  // ...
}

Obsługa błędów

Błędy podczas pobierania lub aktualizowania metadanych mogą wystąpić z wielu powodów, m.in. z powodu braku pliku lub braku uprawnień użytkownika do dostępu do żądanego pliku. Więcej informacji o błędach znajdziesz w sekcji Obsługa błędów w dokumentacji.

Niestandardowe metadane

Niestandardowe metadane możesz określić jako NSDictionary zawierający właściwości NSString.

Swift

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

Objective-C

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

W niestandardowych metadanych możesz przechowywać dane specyficzne dla aplikacji dotyczące każdego pliku, ale zdecydowanie zalecamy używanie bazy danych (np. Firebase Realtime Database) do przechowywania i synchronizowania tego typu danych.

Właściwości metadanych pliku

Pełną listę właściwości metadanych pliku znajdziesz poniżej:

Właściwość Typ Możliwość zapisu
bucket Ciąg znaków Nie
generation Ciąg znaków Nie
metageneration Ciąg znaków Nie
fullPath Ciąg znaków Nie
name Ciąg znaków Nie
size Int64 Nie
timeCreated Data Nie
updated Data Nie
md5Hash Ciąg znaków Tak
cacheControl Ciąg znaków Tak
contentDisposition Ciąg znaków Tak
contentEncoding Ciąg znaków Tak
contentLanguage Ciąg znaków Tak
contentType Ciąg znaków Tak
customMetadata [String: String] Tak

Przesyłanie, pobieranie i aktualizowanie plików jest ważne, ale równie ważne jest możliwość ich usuwania. Dowiedzmy się, jak usuwać pliki z Cloud Storage.