Copiar um objeto

Para copiar um objeto, faça uma solicitação PUT com escopo para o novo bucket e nome de objeto e especifique o objeto de origem com o cabeçalho de solicitação x-goog-copy-source. Para copiar um objeto para você, use o cabeçalho x-goog-metadata-directive com um valor de REPLACE e especifique os metadados do objeto copiado na sua solicitação para começar.

Se os buckets de origem e de destino tiverem locais diferentes, a solicitação de cópia gerará cobranças de uso de rede.

Se algum dos cabeçalhos de cópia condicional não corresponder à condição especificada, você receberá um código de status 412 Precondition Failed, e o corpo da resposta de erro terá PreconditionFailed no elemento Code.

Parâmetros de string de consulta

Normalmente, essa solicitação não inclui parâmetros de string de consulta.

Consulte parâmetros de string de consulta de URL assinado para informações sobre os parâmetros incluídos ao criar e usar URLs assinados.

Cabeçalhos de solicitação

Além dos cabeçalhos de solicitação comuns, os itens a seguir podem ser usados.

Header Descrição Obrigatório
Content-Encoding O algoritmo de compactação usado para compactar o objeto que você está enviando. Não
Content-Disposition Um cabeçalho que pode ser definido em um objeto que especifica as informações de apresentação sobre como os dados do objeto devem ser transmitidos. Não
x-goog-acl A ACL predefinida que você quer aplicar ao objeto. Não use esse parâmetro se você estiver usando o parâmetro de string de consulta acl para aplicar ACLs. Não
x-goog-custom-time Data e hora especificadas pelo usuário. Não
x-goog-metadata-directive As instruções para manipulação de metadados durante uma operação de cópia. Pode ser COPY ou REPLACE. O valor padrão é COPY. Não
x-goog-meta- Um cabeçalho de extensão que pode ser usado para armazenar metadados adicionais que não são fornecidos pelos outros campos. Não
x-goog-copy-source O caminho do bloco/objeto para o objeto que você deseja copiar. Por exemplo, /travel-maps/paris.jpg. Sim
x-goog-copy-source-generation O número de geração do objeto que você quer copiar. Não
x-goog-copy-source-if-match Uma ETag. Se a ETag especificada corresponder à ETag do objeto de origem, o objeto de origem será copiado. Não
x-goog-copy-source-if-none-match Uma ETag. Se a ETag especificada não corresponder à ETag do objeto de origem, o objeto de origem será copiado. Não
x-goog-copy-source-if-modified-since Data e hora. Se a data e a hora especificadas forem anteriores à data Last-Modified do objeto de origem, o objeto será copiado. Não
x-goog-copy-source-if-unmodified-since Data e hora. Se a data e a hora especificadas forem posteriores à data Last-Modified do objeto de origem, o objeto será copiado. Não
x-goog-encryption-kms-key-name A chave de criptografia gerenciada pelo cliente a ser usada para criptografar o objeto copiado. Não

Para copiar um objeto criptografado por uma chave de criptografia fornecida pelo cliente, use os cabeçalhos listados na página "Criptografia" na solicitação.

Elementos do corpo da solicitação

Esta solicitação não inclui um documento XML no corpo da solicitação.

Sintaxe da solicitação

A sintaxe a seguir se aplica às solicitações PUT Object que usam o cabeçalho de solicitação x-goog- copy-source e os cabeçalhos de solicitação de cópia condicional relacionados.

PUT /OBJECT_NAME HTTP/1.1
Host: BUCKET_NAME.storage.googleapis.com
Date: DATE
Content-Length: REQUEST_BODY_LENGTH
Content-Type: MIME_TYPE
Authorization: AUTHENTICATION_STRING
x-goog-copy-source: /BUCKET_NAME/OBJECT_NAME
x-goog-copy-source-if-match: ETAG
x-goog-copy-source-if-none-match: ETAG
x-goog-copy-source-if-unmodified-since: DATE
x-goog-copy-source-if-modified-since: DATE
x-goog-metadata-directive: COPY | REPLACE

Cabeçalhos de resposta

A solicitação pode retornar diversos cabeçalhos de resposta, dependendo dos cabeçalhos de solicitação usados.

Elementos do corpo da resposta

Os elementos de resposta a seguir são retornados quando você usa o cabeçalho de solicitação x-goog-copy- source ou qualquer um dos cabeçalhos de solicitação de cópia condicional relacionados.

Element Descrição
CopyObjectResult Recipiente para informações de cópia.
ETag A ETag do objeto recém-copiado.
LastModified A data e a hora da última modificação do objeto de origem antes da operação atual de cópia.

Exemplo

A amostra a seguir usa o cabeçalho de solicitação x-goog-copy-source para copiar um objeto chamado paris.jpg de um bucket chamado travel-maps para um bucket chamado city-maps.

Solicitação

PUT /paris.jpg HTTP/1.1
Host: city-maps.storage.googleapis.com
Date: Fri, 23 Jul 2010 21:27:36 GMT
Content-Length: 0
x-goog-copy-source: travel-maps/paris.jpg
Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

Resposta

HTTP/1.1 200 OK
ETag: "9930c6204b2f14e1a4496569dc200186"
Date: Fri, 23 Jul 2010 21:27:37 GMT
Expires: Mon, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Content-Length: 175
Content-Type: text/html

<?xml version='1.0' encoding='UTF-8'?>
<CopyObjectResult>
  <LastModified>2010-06-17T16:18:08.291Z</LastModified>
  <ETag>"9930c6204b2f14e1a4496569dc200186"</ETag>
</CopyObjectResult>