Po przesłaniu pliku do Cloud Storage referencyjnego 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
, SizeBytes
i ContentType
(często nazywany typem MIME), a także mniej popularne, np. ContentDisposition
i CreationTimeMillis
. Te metadane można pobrać z Cloud Storage za pomocą metody GetMetadataAsync
.
// Create reference to the file whose metadata we want to retrieve StorageReference forestRef = storageRef.Child("images/forest.jpg"); // Get metadata properties forestRef.GetMetadataAsync().ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { StorageMetadata meta = task.Result; // do stuff with meta } });
Aktualizowanie metadanych pliku
Metadane pliku możesz zaktualizować w dowolnym momencie po zakończeniu przesyłania pliku, korzystając z metody UpdateMetadataAsync
, która przyjmuje obiekt MetadataChange
.
Więcej informacji o tym, które właściwości można aktualizować, znajdziesz na pełnej liście. Aktualizowane są tylko właściwości określone w metadanych, a wszystkie pozostałe pozostają bez zmian.
// Create reference to the file whose metadata we want to change StorageReference forestRef = storageRef.Child("images/forest.jpg"); // Create file metadata to update var newMetadata = new MetadataChange(); newMetadata.CacheControl = "public,max-age=300"; newMetadata.ContentType = "image/jpeg"; // Update metadata properties forestRef.UpdateMetadataAsync(newMetadata).ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { // access the updated meta data StorageMetadata meta = task.Result; } });
Aby usunąć właściwości metadanych, do których można zapisywać dane, przekaż pusty ciąg znaków:
// Create file metadata to update var newMetadata = new MetadataChange(); newMetadata.ContentType = ""; // Update metadata properties forestRef.UpdateMetadataAsync(newMetadata).ContinueWithOnMainThread(task => { if (!task.IsFaulted && !task.IsCanceled) { StorageMetadata meta = task.Result; // meta.ContentType should be an empty string now } });
Obsługa błędów
Istnieje wiele powodów, dla których podczas pobierania lub aktualizowania metadanych mogą wystąpić błędy. Może to być np. brak pliku lub brak uprawnień użytkownika do uzyskania dostępu do wybranego pliku. Więcej informacji o błędach znajdziesz w sekcji Obsługa błędów w dokumentacji.
Niestandardowe metadane
Możesz określić metadane niestandardowe jako Dictionary<string, string>
.
var newMetadata = new MetadataChange { CustomMetadata = new Dictionary<string, string> { {"location", "Yosemite, CA, USA"}, {"activity", "Hiking"} } }; // UpdateMetadataAsync
Możesz przechowywać dane dotyczące poszczególnych aplikacji w metadanych niestandardowych, 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łna lista właściwości metadanych pliku jest dostępna poniżej:
Właściwość | Typ | Możliwość modyfikacji w MetadataChange |
---|---|---|
Bucket |
string |
NIE |
Generation |
string |
NIE |
MetadataGeneration |
string |
NIE |
Path |
string |
NIE |
Name |
string |
NIE |
SizeBytes |
long |
NIE |
CreationTimeMillis |
long |
NIE |
UpdatedTimeMillis |
long |
NIE |
CacheControl |
string |
TAK |
ContentDisposition |
string |
TAK |
ContentEncoding |
string |
TAK |
ContentLanguage |
string |
TAK |
ContentType |
string |
TAK |
DownloadUrl |
Uri |
NIE |
DownloadUrls |
IList<Uri> |
NIE |
CustomMetadataKeys |
IEnumerable<string> |
TAK |
Następne kroki
Przesyłanie, pobieranie i aktualizowanie plików jest ważne, ale możliwość ich usuwania też. Dowiedz się, jak usuwać pliki z Cloud Storage.