После загрузки файла в справочник Cloud Storage вы также можете получить или обновить метаданные файла, например, для обновления типа контента. Файлы также могут хранить пользовательские пары ключ/значение с дополнительными метаданными файла.
Получить метаданные файла
Метаданные файла содержат общие свойства, такие как name
, size
и contentType
(часто называемые MIME-типом), в дополнение к некоторым менее распространенным свойствам, таким как contentDisposition
и timeCreated
. Эти метаданные можно получить из ссылки на облачное хранилище с помощью метода getMetadata()
. getMetadata()
возвращает Promise
, содержащее полные метаданные, или ошибку, если Promise
отклонено.
Web modular API
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 namespaced API
// 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 modular API
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 namespaced API
// 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 modular API
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 namespaced API
// 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 modular API
const metadata = { customMetadata: { 'location': 'Yosemite, CA, USA', 'activity': 'Hiking' } };
Web namespaced API
var metadata = { customMetadata: { 'location': 'Yosemite, CA, USA', 'activity': 'Hiking' } };
Вы можете использовать настраиваемые метаданные для хранения дополнительных данных приложения для каждого файла, но мы настоятельно рекомендуем использовать базу данных (например, базу данных реального времени Firebase ) для хранения и синхронизации данных этого типа.
Свойства метаданных файла
Полный список свойств метаданных в файле доступен ниже:
Свойство | Тип | Доступно для записи |
---|---|---|
bucket | нить | НЕТ |
generation | нить | НЕТ |
metageneration | нить | НЕТ |
fullPath | нить | НЕТ |
name | нить | НЕТ |
size | число | НЕТ |
timeCreated | нить | НЕТ |
updated | нить | НЕТ |
md5Hash | нить | ДА при загрузке, НЕТ при обновлении метаданных |
cacheControl | нить | ДА |
contentDisposition | нить | ДА |
contentEncoding | нить | ДА |
contentLanguage | нить | ДА |
contentType | нить | ДА |
customMetadata | Объект, содержащий отображения строк->строк | ДА |
Загрузка, скачивание и обновление файлов важны, но не менее важна возможность их удаления. Давайте узнаем, как удалить файлы из облачного хранилища.