Używanie metadanych pliku w Cloud Storage w Flutter

Po przesłaniu pliku do Cloud Storage możesz też pobrać i zaktualizować jego metadane, na przykład wyświetlić lub zaktualizować typ zawartoś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, size i contentType (często nazywane typem 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

Metadane pliku możesz zaktualizować w dowolnym momencie po zakończeniu przesyłania pliku, używając metody updateMetadata(). 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
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 metadanych, które można zapisywać, 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 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ć za pomocą parametru customMetadata konstruktora 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

W niestandardowych metadanych możesz przechowywać dane aplikacji dotyczące poszczególnych plików, ale zdecydowanie zalecamy używanie bazy danych (takiej jak Baza danych czasu rzeczywistego Firebase) 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ść ustawienia?
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 istotna jest możliwość ich usuwania. Dowiedzmy się, jak usuwać pliki z Cloud Storage.