Używanie metadanych pliku w Cloud Storage na platformach Apple

Po przesłaniu pliku do referencji Cloud Storage możesz też uzyskać i aktualizacji metadanych pliku, np. w celu zaktualizowania typu treści. Pliki umożliwia również przechowywanie niestandardowych par klucz-wartość z dodatkowymi metadanymi pliku.

Pobieranie metadanych pliku

Metadane pliku zawierają typowe właściwości, takie jak name, size, contentType (często nazywany typem MIME), a także najpopularniejsze, takie jak contentDisposition i timeCreated. Metadane te mogą być pobrano z odwołania Cloud Storage za pomocą metodę 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, poprzez za pomocą metody updateMetadata:withCompletion:. Zapoznaj się z pełna lista. można zaktualizować. Aktualizowane są tylko właściwości określone w metadanych, wszystkie pozostałe pozostaną niezmienione.

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 z możliwością zapisu możesz usunąć, ustawiając je 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 mogą być spowodowane przez różne metadanych, w tym pliku, który nie istnieje, lub użytkownika, który nie ma uprawnień; aby uzyskać dostęp do wybranego pliku. Więcej informacji o błędach znajdziesz w Obsługa błędów sekcji dokumentów.

Niestandardowe metadane

Możesz określić metadane niestandardowe jako element NSDictionary zawierający NSString usług.

Swift

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

Objective-C

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

W przypadku każdego pliku możesz przechowywać dane dotyczące konkretnej aplikacji w niestandardowych metadanych, ale zalecamy korzystanie z bazy danych (takiej jak Bazy danych czasu rzeczywistego Firebase) do przechowywania i synchronizowania tego typu i skalowalnych danych.

Właściwości metadanych pliku

Pełna lista właściwości metadanych pliku jest dostępna poniżej:

Właściwość Typ Z możliwością 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 [Ciąg: ciąg znaków] Tak

Przesyłanie, pobieranie i aktualizowanie plików jest ważne, aby je usunąć. Zobaczmy, jak usuwanie plików z Cloud Storage.