Używanie metadanych pliku w Cloud Storage w Flutter

Po przesłaniu pliku do pliku referencyjnego Cloud Storage możesz też pobrać i zaktualizować metadane pliku, np. aby wyświetlić lub zaktualizować typ treści. Pliki mogą też przechowywać niestandardowe pary klucz-wartość z dodatkowymi metadanymi pliku.

Pobieranie metadanych

Metadane pliku zawierają typowe właściwości, takie jak name, size i contentType (często określane jako typ MIME), a także mniej typowe, takie jak contentDisposition i timeCreated. Te metadane można pobrać z odwołania do Cloud Storage za pomocą metody getMetadata().

// Create reference to the file whose metadata we want to retrieve
final forestRef = storageRef.child("images/forest.jpg");

// Get metadata properties
final metadata = await forestRef.getMetadata();

// Metadata now contains the metadata for 'images/forest.jpg'

Aktualizowanie metadanych pliku

Po zakończeniu przesyłania pliku możesz zaktualizować jego metadane w dowolnym momencie, używając metody updateMetadata(). Więcej informacji o tym, które właściwości można aktualizować, znajdziesz na tej liście. Zaktualizowane zostaną tylko właściwości określone w metadanych. Wszystkie pozostałe pozostaną bez zmian.

// Create reference to the file whose metadata we want to change
final forestRef = storageRef.child("images/forest.jpg");

// Create file metadata to update
final newMetadata = SettableMetadata(
  cacheControl: "public,max-age=300",
  contentType: "image/jpeg",
);

// Update metadata properties
final metadata = await forestRef.updateMetadata(newMetadata);

// Updated metadata for 'images/forest.jpg' is returned

Możesz usunąć właściwości meta danych, które można zapisać, przekazując null:

// Delete the cacheControl property
final newMetadata = SettableMetadata(cacheControl: null);
final metadata = await forestRef.updateMetadata(newMetadata);

Obsługa błędów

Błędy podczas pobierania lub aktualizowania metadanych mogą wystąpić z różnych powodów, na przykład z powodu braku pliku lub braku uprawnień użytkownika do wybranego pliku. Więcej informacji o błędach znajdziesz w sekcji Przetwarzanie błędów w dokumentacji.

Niestandardowe metadane

Metadane niestandardowe możesz określić za pomocą parametru customMetadata w konstrukcji SettableMetadata:

// Create reference to the file whose metadata we want to change
final forestRef = storageRef.child("images/forest.jpg");

// Create file metadata to update
final newCustomMetadata = SettableMetadata(
  customMetadata: {
    "location": "Yosemite, CA, USA",
    "activity": "Hiking",
  },
);

// Update metadata properties
final metadata = await forestRef.updateMetadata(newCustomMetadata);

// Updated metadata for 'images/forest.jpg' is returned

Dane dotyczące aplikacji dla każdego pliku możesz przechowywać 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

Poniżej znajdziesz pełną listę właściwości metadanych pliku:

Właściwość Typ Czy można je ustawić?
bucket String Nie
generation String Nie
metageneration String Nie
metadataGeneration String Nie
fullPath String Nie
name String Nie
size int Nie
timeCreated DateTime Nie
updated DateTime Nie
md5Hash String Nie
cacheControl String Tak
contentDisposition String Tak
contentEncoding String Tak
contentLanguage String Tak
contentType String Tak
customMetadata Map<String, String> Tak

Przesyłanie, pobieranie i aktualizowanie plików jest ważne, ale równie ważne jest ich usuwanie. Dowiedz się, jak usuwać pliki z Cloud Storage.