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.