Po przesłaniu pliku do referencji Cloud Storage możesz też pobierać i aktualizować jego metadane, na przykład aby wyświetlić lub zaktualizować typ treści. Pliki mogą też przechowywać niestandardowe pary klucz-wartość z dodatkowymi metadanymi pliku.
Pobieranie metadanych pliku
Metadane plików zawierają popularne właściwości, takie jak name
, size
i contentType
(często określane jako typ MIME), a także niektóre mniej typowe właściwości, np. contentDisposition
i timeCreated
. Te metadane można pobrać z referencji 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 jego przesyłania. Aby to zrobić, użyj metody updateMetadata()
. Więcej informacji o tym, które właściwości można zaktualizować, znajdziesz na pełnej liście. Zaktualizowane zostaną tylko właściwości określone w metadanych, a 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ąć dostępne do zapisu właściwości metadanych, przekazując parametr null
:
// Delete the cacheControl property
final newMetadata = SettableMetadata(cacheControl: null);
final metadata = await forestRef.updateMetadata(newMetadata);
Obsługa błędów
Błędy mogą występować z różnych powodów, np. gdy plik nie istnieje lub użytkownik nie ma uprawnień dostępu do niego. Więcej informacji o błędach znajdziesz w dokumentacji w sekcji Obsługa błędów.
Niestandardowe metadane
Możesz określić metadane niestandardowe 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 przypadku każdego pliku możesz przechowywać w niestandardowych metadanych dane specyficzne dla aplikacji, ale zdecydowanie zalecamy korzystanie z 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 | Do ustalenia? |
---|---|---|
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 bardzo ważne, ale trzeba też móc je usuwać. Dowiedz się, jak usuwać pliki z Cloud Storage.