Use metadados de arquivo com Cloud Storage em plataformas Apple

Depois de fazer upload de um arquivo para a referência do Cloud Storage, você também pode obter e atualizar os metadados do arquivo, por exemplo, para atualizar o tipo de conteúdo. Os arquivos também podem armazenar pares chave/valor personalizados com metadados de arquivo adicionais.

Obtenha metadados de arquivo

Os metadados do arquivo contêm propriedades comuns, como name , size e contentType (geralmente chamadas de tipo MIME), além de algumas menos comuns, como contentDisposition e timeCreated . Esses metadados podem ser recuperados de uma referência do Cloud Storage usando o método metadataWithCompletion:

Rápido

// 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 {
  // ...
}
    

Objetivo-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'
  }
}];
  

Atualizar metadados de arquivo

Você pode atualizar os metadados do arquivo a qualquer momento após a conclusão do upload do arquivo usando o método updateMetadata:withCompletion: Consulte a lista completa para obter mais informações sobre quais propriedades podem ser atualizadas. Somente as propriedades especificadas nos metadados são atualizadas, todas as outras permanecem inalteradas.

Rápido

// 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 {
  // ...
}
    

Objetivo-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
  }
}];
  

Você pode excluir propriedades de metadados graváveis ​​definindo-as como nil :

Objetivo-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
  }
}];

Rápido

let newMetadata = StorageMetadata()
newMetadata.contentType = nil

do {
  // Delete the metadata property
  let updatedMetadata = try await forestRef.updateMetadata(newMetadata)
} catch {
  // ...
}

Lidar com erros

Existem vários motivos pelos quais podem ocorrer erros na obtenção ou atualização de metadados, incluindo o arquivo não existente ou o usuário não ter permissão para acessar o arquivo desejado. Mais informações sobre erros podem ser encontradas na seção Tratar erros da documentação.

Metadados personalizados

Você pode especificar metadados personalizados como um NSDictionary contendo propriedades NSString .

Rápido

let metadata = [
  "customMetadata": [
    "location": "Yosemite, CA, USA",
    "activity": "Hiking"
  ]
]
    

Objetivo-C

NSDictionary *metadata = @{
  @"customMetadata": @{
    @"location": @"Yosemite, CA, USA",
    @"activity": @"Hiking"
  }
};

Você pode armazenar dados específicos do aplicativo para cada arquivo em metadados personalizados, mas é altamente recomendável usar um banco de dados (como o Firebase Realtime Database ) para armazenar e sincronizar esse tipo de dados.

Propriedades de metadados de arquivo

Uma lista completa de propriedades de metadados em um arquivo está disponível abaixo:

Propriedade Tipo Gravável
bucket Corda Não
generation Corda Não
metageneration Corda Não
fullPath Corda Não
name Corda Não
size Int64 Não
timeCreated Data Não
updated Data Não
md5Hash Corda Sim
cacheControl Corda Sim
contentDisposition Corda Sim
contentEncoding Corda Sim
contentLanguage Corda Sim
contentType Corda Sim
customMetadata [Sequência: Sequência] Sim

Carregar, baixar e atualizar arquivos é importante, mas poder removê-los também. Vamos aprender como excluir arquivos do Cloud Storage.