Używanie metadanych pliku w Cloud Storage dla Unity

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, SizeBytesContentType (często nazywany typem MIME), a także mniej popularne, np. ContentDispositionCreationTimeMillis. 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.