После загрузки файла в Cloud Storage вы также можете получить или обновить метаданные файла, например, для обновления типа контента. Файлы также могут хранить пользовательские пары «ключ/значение» с дополнительными метаданными.
Получить метаданные файла
Метаданные файла содержат общие свойства, такие как name
, size
и contentType
(часто называемый типом MIME), а также некоторые менее распространённые, такие как contentDisposition
и timeCreated
. Эти метаданные можно получить из ссылки на Cloud Storage с помощью метода getMetadata()
. getMetadata()
возвращает Promise
, содержащий полные метаданные, или ошибку, если Promise
отклоняется.
Web
import { getStorage, ref, getMetadata } from "firebase/storage"; // Create a reference to the file whose metadata we want to retrieve const storage = getStorage(); const forestRef = ref(storage, 'images/forest.jpg'); // Get metadata properties getMetadata(forestRef) .then((metadata) => { // Metadata now contains the metadata for 'images/forest.jpg' }) .catch((error) => { // Uh-oh, an error occurred! });
Web
// Create a reference to the file whose metadata we want to retrieve var forestRef = storageRef.child('images/forest.jpg'); // Get metadata properties forestRef.getMetadata() .then((metadata) => { // Metadata now contains the metadata for 'images/forest.jpg' }) .catch((error) => { // Uh-oh, an error occurred! });
Обновить метаданные файла
Вы можете обновить метаданные файла в любой момент после завершения загрузки файла с помощью метода updateMetadata()
. Подробнее о том, какие свойства можно обновить, см. в полном списке . Обновляются только свойства, указанные в метаданных, все остальные остаются без изменений. updateMetadata()
возвращает Promise
, содержащий полные метаданные, или ошибку, если Promise
отклонен.
Web
import { getStorage, ref, updateMetadata } from "firebase/storage"; // Create a reference to the file whose metadata we want to change const storage = getStorage(); const forestRef = ref(storage, 'images/forest.jpg'); // Create file metadata to update const newMetadata = { cacheControl: 'public,max-age=300', contentType: 'image/jpeg' }; // Update metadata properties updateMetadata(forestRef, newMetadata) .then((metadata) => { // Updated metadata for 'images/forest.jpg' is returned in the Promise }).catch((error) => { // Uh-oh, an error occurred! });
Web
// Create a reference to the file whose metadata we want to change var forestRef = storageRef.child('images/forest.jpg'); // Create file metadata to update var newMetadata = { cacheControl: 'public,max-age=300', contentType: 'image/jpeg' }; // Update metadata properties forestRef.updateMetadata(newMetadata) .then((metadata) => { // Updated metadata for 'images/forest.jpg' is returned in the Promise }).catch((error) => { // Uh-oh, an error occurred! });
Вы можете удалить свойство метаданных, установив его на null
:
Web
import { getStorage, ref, updateMetadata } from "firebase/storage"; const storage = getStorage(); const forestRef = ref(storage, 'images/forest.jpg'); // Create file metadata with property to delete const deleteMetadata = { contentType: null }; // Delete the metadata property updateMetadata(forestRef, deleteMetadata) .then((metadata) => { // metadata.contentType should be null }).catch((error) => { // Uh-oh, an error occurred! });
Web
// Create file metadata with property to delete var deleteMetadata = { contentType: null }; // Delete the metadata property forestRef.updateMetadata(deleteMetadata) .then((metadata) => { // metadata.contentType should be null }).catch((error) => { // Uh-oh, an error occurred! });
Обработка ошибок
Ошибки при получении или обновлении метаданных могут возникать по ряду причин, включая отсутствие файла или отсутствие у пользователя прав доступа к нужному файлу. Подробнее об ошибках можно узнать в разделе «Обработка ошибок» документации.
Пользовательские метаданные
Вы можете указать пользовательские метаданные как объект, содержащий String
свойства.
Web
const metadata = { customMetadata: { 'location': 'Yosemite, CA, USA', 'activity': 'Hiking' } };
Web
var metadata = { customMetadata: { 'location': 'Yosemite, CA, USA', 'activity': 'Hiking' } };
Вы можете использовать пользовательские метаданные для хранения дополнительных данных, специфичных для приложения, для каждого файла, но мы настоятельно рекомендуем использовать базу данных (например, Firebase Realtime Database ) для хранения и синхронизации этого типа данных.
Свойства метаданных файла
Полный список свойств метаданных файла доступен ниже:
Свойство | Тип | Записываемый |
---|---|---|
bucket | нить | НЕТ |
generation | нить | НЕТ |
metageneration | нить | НЕТ |
fullPath | нить | НЕТ |
name | нить | НЕТ |
size | число | НЕТ |
timeCreated | нить | НЕТ |
updated | нить | НЕТ |
md5Hash | нить | ДА при загрузке, НЕТ при обновленииMetadata |
cacheControl | нить | ДА |
contentDisposition | нить | ДА |
contentEncoding | нить | ДА |
contentLanguage | нить | ДА |
contentType | нить | ДА |
customMetadata | Объект, содержащий сопоставления строка->строка | ДА |
Загрузка, скачивание и обновление файлов важны, но не менее важна и возможность их удаления. Давайте узнаем, как удалить файлы из Cloud Storage .