После загрузки файла в Cloud Storage вы также можете получить и обновить его метаданные, например изменить тип контента. В файлах также можно хранить пары "ключ-значение" с дополнительными метаданными.
Получение метаданных файла
Метаданные файла содержат такие распространенные свойства, как name, size и contentType (часто называемый MIME-типом), а также менее распространенные, например contentDisposition и timeCreated. Эти метаданные можно получить из ссылки на Cloud Storage с помощью метода metadataWithCompletion:.
Swift
// 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 { // ... }
Objective-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:. Подробнее о том, какие свойства можно изменить, рассказывается в полном списке. Будут обновлены только свойства, указанные в метаданных. Остальные свойства останутся без изменений.
Swift
// 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 { // ... }
Objective-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:
Objective-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 } }];
Swift
let newMetadata = StorageMetadata() newMetadata.contentType = nil do { // Delete the metadata property let updatedMetadata = try await forestRef.updateMetadata(newMetadata) } catch { // ... }
Обработка ошибок
При получении или обновлении метаданных могут возникать ошибки по разным причинам, например из-за того, что файл не существует или у пользователя нет разрешения на доступ к нему. Дополнительную информацию об ошибках можно найти в разделе Обработка ошибок документации.
Пользовательские метаданные
Вы можете указать специальные метаданные в виде объекта NSDictionary, содержащего свойства NSString.
Swift
let metadata = [ "customMetadata": [ "location": "Yosemite, CA, USA", "activity": "Hiking" ] ]
Objective-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.