После загрузки файла в 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 | нить | Да при загрузке, нет при обновлении метаданных. |
cacheControl | нить | ДА |
contentDisposition | нить | ДА |
contentEncoding | нить | ДА |
contentLanguage | нить | ДА |
contentType | нить | ДА |
customMetadata | Объект, содержащий сопоставление строк со строками. | ДА |
Загрузка, скачивание и обновление файлов важны, но не менее важно уметь их удалять. Давайте разберемся, как удалять файлы из Cloud Storage .