После загрузки файла в цифровой отпечаток 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 |
string | НЕТ |
generation |
string | НЕТ |
metageneration |
string | НЕТ |
fullPath |
string | НЕТ |
name |
string | НЕТ |
size |
Число | НЕТ |
timeCreated |
string | НЕТ |
updated |
string | НЕТ |
md5Hash |
string | Да – при загрузке, нет – при обновлении метаданных. |
cacheControl |
string | ДА |
contentDisposition |
string | ДА |
contentEncoding |
string | ДА |
contentLanguage |
string | ДА |
contentType |
string | ДА |
customMetadata |
Объект, содержащий сопоставления string->string | ДА |
Загрузка, скачивание и обновление файлов важны, но также важна возможность их удаления. Давайте узнаем, как удалять файлы из Cloud Storage.