Po przesłaniu pliku do pliku referencyjnego Cloud Storage możesz też pobrać i zaktualizować metadane pliku, np. aby zaktualizować typ treści. W plikach można też przechowywać niestandardowe pary klucz-wartość z dodatkowymi metadanymi plików.
Pobieranie metadanych pliku
Metadane pliku zawierają typowe właściwości, takie jak Name, SizeBytes i ContentType (często nazywane typem MIME), a także niektóre mniej typowe, takie jak ContentDisposition i CreationTimeMillis. Te metadane można pobrać z odwołania 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, używając 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ą niezmienione.
// 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; } });
Właściwości metadanych z możliwością zapisu możesz usunąć, przekazując 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ługuj błędy
Błędy podczas pobierania lub aktualizowania metadanych mogą wystąpić z wielu powodów, m.in. gdy plik nie istnieje lub użytkownik nie ma uprawnień 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 Dictionary<string, string>.
var newMetadata = new MetadataChange { CustomMetadata = new Dictionary<string, string> { {"location", "Yosemite, CA, USA"}, {"activity", "Hiking"} } }; // UpdateMetadataAsync
W niestandardowych metadanych możesz przechowywać dane aplikacji dotyczące poszczególnych plików, ale zdecydowanie zalecamy używanie bazy danych (takiej jak 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 równie istotna jest możliwość ich usuwania. Dowiedzmy się, jak usunąć pliki z usługi Cloud Storage.