Używanie metadanych pliku w Cloud Storage w Flutter

Po przesłaniu pliku do 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 pliku

Metadane pliku zawierają typowe właściwości, takie jak name, size i contentType (często nazywany 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 za pomocą metody updateMetadata(). Więcej informacji o tym, które właściwości można zaktualizować, znajdziesz na pełnej liście. Aktualizowane są tylko właściwości określone w metadanych, a wszystkie inne pozostają niezmienione.

// 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 wartość 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. z powodu braku pliku lub braku uprawnień użytkownika do dostępu do żądanego pliku. Więcej informacji o błędach znajdziesz w sekcji Obsługa błędów w dokumentacji.

Niestandardowe metadane

Możesz określić niestandardowe metadane 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 specyficzne dla aplikacji dotyczące każdego pliku, ale zdecydowanie zalecamy używanie bazy danych (np. Baza danych czasu rzeczywistego Firebase) do przechowywania i synchronizowania tego typu danych.

Właściwości metadanych pliku

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

Właściwość Typ Można 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 możliwość ich usuwania. Dowiedzmy się, jak usuwać pliki z Cloud Storage.