После загрузки файла в Cloud Storage вы также можете получить и обновить метаданные файла, например, чтобы обновить тип контента. Файлы также могут хранить пользовательские пары ключ/значение с дополнительными метаданными файла.
Получить метаданные файла
Метаданные файла содержат общие свойства, такие как name
, size
и contentType
(часто называемые MIME-типом), а также некоторые менее распространенные свойства, такие как contentDisposition
и timeCreated
. Эти метаданные можно получить из ссылки Cloud Storage с помощью метода metadataWithCompletion:
Быстрый
// Create reference to the file whose metadata we want to retrieve let forestRef = storageRef.child("images/forest.jpg") // Get metadata properties do { let metadata = try await forestRef.getMetadata() } catch { // ... }
Цель-C
// Create reference to the file whose metadata we want to retrieve FIRStorageReference *forestRef = [storageRef child:@"images/forest.jpg"]; // Get metadata properties [forestRef metadataWithCompletion:^(FIRStorageMetadata *metadata, NSError *error) { if (error != nil) { // Uh-oh, an error occurred! } else { // Metadata now contains the metadata for 'images/forest.jpg' } }];
Обновить метаданные файла
Вы можете обновить метаданные файла в любое время после завершения загрузки файла, используя метод updateMetadata:withCompletion:
Обратитесь к полному списку для получения дополнительной информации о том, какие свойства можно обновить. Обновляются только свойства, указанные в метаданных, все остальные остаются неизмененными.
Быстрый
// Create reference to the file whose metadata we want to change let forestRef = storageRef.child("images/forest.jpg") // Create file metadata to update let newMetadata = StorageMetadata() newMetadata.cacheControl = "public,max-age=300" newMetadata.contentType = "image/jpeg" // Update metadata properties do { let updatedMetadata = try await forestRef.updateMetadata(newMetadata) } catch { // ... }
Цель-C
// Create reference to the file whose metadata we want to change FIRStorageReference *forestRef = [storageRef child:@"images/forest.jpg"]; // Create file metadata to update FIRStorageMetadata *newMetadata = [[FIRStorageMetadata alloc] init]; newMetadata.cacheControl = @"public,max-age=300"; newMetadata.contentType = @"image/jpeg"; // Update metadata properties [forestRef updateMetadata:newMetadata completion:^(FIRStorageMetadata *metadata, NSError *error){ if (error != nil) { // Uh-oh, an error occurred! } else { // Updated metadata for 'images/forest.jpg' is returned } }];
Вы можете удалить свойства метаданных, доступные для записи, установив для них значение nil
:
Цель-C
FIRStorageMetadata *newMetadata = [[FIRStorageMetadata alloc] init]; newMetadata.contentType = nil; // Delete the metadata property [forestRef updateMetadata:newMetadata completion:^(FIRStorageMetadata *metadata, NSError *error){ if (error != nil) { // Uh-oh, an error occurred! } else { // metadata.contentType should be nil } }];
Быстрый
let newMetadata = StorageMetadata() newMetadata.contentType = nil do { // Delete the metadata property let updatedMetadata = try await forestRef.updateMetadata(newMetadata) } catch { // ... }
Обработка ошибок
Существует ряд причин, по которым могут возникать ошибки при получении или обновлении метаданных, включая отсутствие файла или отсутствие у пользователя разрешения на доступ к нужному файлу. Дополнительную информацию об ошибках можно найти в разделе «Обработка ошибок» документации.
Пользовательские метаданные
Вы можете указать пользовательские метаданные как NSDictionary
содержащий свойства NSString
.
Быстрый
let metadata = [ "customMetadata": [ "location": "Yosemite, CA, USA", "activity": "Hiking" ] ]
Цель-C
NSDictionary *metadata = @{ @"customMetadata": @{ @"location": @"Yosemite, CA, USA", @"activity": @"Hiking" } };
Вы можете хранить данные, специфичные для приложения, для каждого файла в пользовательских метаданных, но мы настоятельно рекомендуем использовать базу данных (например, Firebase Realtime Database ) для хранения и синхронизации данных этого типа.
Свойства метаданных файла
Полный список свойств метаданных файла доступен ниже:
Свойство | Тип | записываемый |
---|---|---|
bucket | Нить | Нет |
generation | Нить | Нет |
metageneration | Нить | Нет |
fullPath | Нить | Нет |
name | Нить | Нет |
size | Int64 | Нет |
timeCreated | Дата | Нет |
updated | Дата | Нет |
md5Hash | Нить | Да |
cacheControl | Нить | Да |
contentDisposition | Нить | Да |
contentEncoding | Нить | Да |
contentLanguage | Нить | Да |
contentType | Нить | Да |
customMetadata | [Строка: Строка] | Да |
Загрузка, скачивание и обновление файлов важны, но не менее важна и возможность их удаления. Давайте узнаем, как удалить файлы из Cloud Storage .