Download de objetos
Funções
Esta operação baixa objetos do OBS. Antes de usar esta operação GET, verifique se você tem a permissão de leitura para o objeto alvo. Se o proprietário do objeto tiver concedido a usuários anônimos a permissão de leitura do objeto, os usuários anônimos poderão acessar esse objeto sem usar o campo de cabeçalho de autenticação.
Criptografia do lado do servidor
Se o objeto carregado no servidor for criptografado no servidor usando a chave de criptografia fornecida pelo cliente, o download do objeto exigirá a inclusão da chave de criptografia na mensagem.
Controle de versões
Por padrão, a operação GET retorna a versão atual de um objeto. Se a versão atual do objeto for um marcador de exclusão, o OBS retornará um código que significa a não existência do objeto. Para obter um objeto de uma versão especificada, o parâmetro versionId pode ser usado para especificar a versão desejada.
Objetos de Archive do OBS
Se o objeto a ser baixado for um objeto Um arquivo, restaure-o antes de baixá-lo. A resposta varia com o status de recuperação do objeto. Se o objeto foi restaurado, o cabeçalho x-obs-restore é retornado indicando a data de expiração do objeto quando ele é baixado com sucesso. Se você solicitar o download de objetos Archive que não foram restaurados ou estão sendo restaurados, um erro 403 Forbidden será retornado.
Sintaxe da solicitação
1 2 3 4 5 6 |
GET /ObjectName HTTP/1.1 Host: bucketname.obs.region.myhuaweicloud.com Date: date Authorization: authorization Range:bytes=byte_range <Optional Additional Header> |
O campo é opcional. Se não existir, você pode obter todo o conteúdo.
Parâmetros de solicitação
Em uma solicitação GET, você pode substituir valores para um conjunto de cabeçalhos de mensagem usando os parâmetros de solicitação. Os cabeçalhos de mensagem que você pode substituir são Content-Type, Content-Language, Expires, Cache-Control, Content-Disposition, e Content-Encoding. Se o objeto de destino tiver várias versões, use o parâmetro versionId para especificar a versão a ser baixada. Para mais detalhes, consulte Tabela 1.
OBS não processa Accept-Encoding transportado em um pedido ou compactar ou descompactar os dados carregados. O cliente determina se deve compactar ou descompactar os dados. Alguns clientes HTTP podem descompactar dados com base no Content-Encoding retornado pelo servidor. O programa cliente precisa determinar se descompactar e como descompactar os dados. Para descomprimir os dados, ele pode modificar Content-Encoding (os metadados do objeto armazenados no OBS) ou reescrever Content-Encoding o objeto é baixado. Se uma solicitação de download de objeto especificar o cabeçalho de reescrita, o cabeçalho da mensagem HTTP padrão retornado pelo OBS estará sujeito ao conteúdo de reescrita especificado na solicitação.
Parâmetro |
Descrição |
Obrigatório |
---|---|---|
response-content-type |
Reescreve o cabeçalho Content-Type na resposta. Tipo: string |
Não |
response-content-language |
Reescreve o cabeçalho Content-Language na resposta. Tipo: string |
Não |
response-expires |
Reescreve o cabeçalho Expires na resposta. Tipo: string |
Não |
response-cache-control |
Reescreve o cabeçalho Cache-Control na resposta. Tipo: string |
Não |
response-content-disposition |
Reescreve o cabeçalho Content-Disposition na resposta. Tipo: string Exemplo: response-content-disposition=attachment; filename*=utf-8''name1 Neste exemplo, o objeto baixado é renomeado como name1. Se o novo nome contiver caracteres chineses, ele deverá ser codificado por URL. |
Não |
response-content-encoding |
Reescreve o cabeçalhoContent-Encoding na resposta. Tipo: string |
Não |
versionId |
Indica a ID de versão do objeto cujo conteúdo é obtido. Tipo: string |
Não |
x-image-process |
Serviço de processamento de imagens. Um exemplo é fornecido como segue: Comando: x-image-process=image/commands Estilo: x-image-process=style/stylename Para obter detalhes, consulte o Guia de recursos de processamento de imagens. |
Não |
attname |
Reescreve o cabeçalho Content-Disposition na resposta. Tipo: string Exemplo: attname=name1 Renomeie o objeto baixado como name1. |
Não |
Cabeçalhos de solicitação
Essa solicitação usa cabeçalhos comuns. Além disso, você pode adicionar cabeçalhos adicionais a essa solicitação. Tabela 2 descreve os cabeçalhos adicionais.
Cabeçalho |
Descrição |
Obrigatório |
---|---|---|
Range |
Obtém o conteúdo do objeto dentro do escopo definido por Range. Se o valor do parâmetro for inválido, o objeto inteiro é obtido. O valor do Range começa em 0, e o valor máximo é igual ao comprimento do objeto menos 1. O valor inicial de Range é obrigatório. Se somente o valor inicial for especificado, o sistema obterá o conteúdo do objeto a partir do valor inicial até o valor máximo padrão. Após o campo de cabeçalho Range é transportado, o valor de ETag na mensagem de resposta é o ETag do objeto em vez do ETag do objeto no campo Range. Tipo: string bytes=bucket_de_bytes Exemplo 1: bytes=0-4 Exemplo 2: bytes=1024 Exemplo 3: bytes=10-20, 30-40 (múltiplos buckets) |
Não |
If-Modified-Since |
Retorna o objeto somente se ele tiver sido modificado desde o tempo especificado por este cabeçalho. Caso contrário, 304 Not Modified é retornado. Tipo: Cadeia de caracteres de tempo HTTP em conformidade com o formato especificado em http://www.ietf.org/rfc/rfc2616.txt |
Não |
If-Unmodified-Since |
Retorna o objeto somente se ele não tiver sido modificado desde o tempo especificado por este cabeçalho. Caso contrário, 412 Precondition Failed falhou é retornado. Tipo: Cadeia de caracteres de tempo HTTP em conformidade com o formato especificado em http://www.ietf.org/rfc/rfc2616.txt |
Não |
If-Match |
Retorna o objeto somente se sua ETag for a mesma especificada por este cabeçalho. Caso contrário, 412 Precondition Failed falhou é retornado. Tipo: string (Exemplo: 0f64741bf7cb1089e988e4585d0d3434) |
Não |
If-None-Match |
Retorna o objeto somente se sua ETag for diferente da especificada por este cabeçalho. Caso contrário, 304 Not Modified é retornado. Tipo: string (Exemplo: 0f64741bf7cb1089e988e4585d0d3434) |
Não |
x-obs-server-side-encryption-customer-algorithm |
Indica um algoritmo de encriptação. O cabeçalho é usado no modo SSE-C. Tipo: string Exemplo: x-obs-server-encryption-customer-algorithm:AES256 Restrições: Este cabeçalho deve ser usado em conjunto com x-obs-server-side-encryption-customer-key e x-obs-server-side-encryption-customer-key-MD5. |
Se você selecionar No, esse cabeçalho será necessário quando SSE-C for usado. |
x-obs-server-side-encryption-customer-key |
Indica uma chave usada para criptografar objetos. O cabeçalho é usado no modo SSE-C. Essa chave é usada para descriptografar objetos. Tipo: string Exemplo: x-obs-server-encryption-side-customer-key:K7QkYpBkM5+hcs27fsNkUnNVaobncnLht/rCB2o/9Cw= Restrições: Esse cabeçalho é uma chave de 256 bits codificada em Base64 e deve ser usado em conjunto com x-obs-server-side-encryption-customer-algorithm e x-obs-server-side-encryption-customer-key-MD5. |
Se algum processo é anormal: Este cabeçalho é necessário quando SSE-C é usado. |
x-obs-server-side-encryption-customer-key-MD5 |
Indica o valor MD5 de uma chave usada para criptografar objetos. O cabeçalho é usado no modo SSE-C. O valor MD5 é usado para verificar se ocorre algum erro durante a transmissão da chave. Tipo: string Exemplo: x-obs-server-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ== Restrições: Esse cabeçalho é uma string codificada em Base64 de 128 bits e deve ser usada em conjunto com x-obs-server-side-encryption-customer-algorithm e x-obs-server-side-encryption-customer-key. |
Não. Este cabeçalho é necessário quando SSE-C é usado. |
Elementos de solicitação
Este pedido não envolve elementos.
Sintaxe da resposta
1 2 3 4 5 6 7 8 |
HTTP/1.1 status_code Content-Type: type Date: date Content-Length: length Etag: etag Last-Modified: time <Object Content> |
Cabeçalhos de resposta
A resposta à solicitação usa cabeçalhos comuns. Para mais detalhes, consulte Tabela 1.
Além da resposta comum cabeçalhos, a seguinte mensagem cabeçalhos também podem ser utilizados. Para mais detalhes, consulte Tabela 3.
Cabeçalho |
Descrição |
---|---|
x-obs-expiration |
Quando um objeto tem sua regra de ciclo de vida, o tempo de expiração do objeto está sujeito à sua regra de ciclo de vida. Esse campo de cabeçalho é usar expiry-date para descrever a data de expiração do objeto. Se a regra do ciclo de vida for configurada somente para o bucket inteiro, não para objetos individuais, o tempo de expiração do objeto estará sujeito à regra do ciclo de vida do bucket. Esse campo de cabeçalho usa expiry-date e rule-id para descrever as informações detalhadas de expiração dos objetos. Se nenhuma regra de ciclo de vida estiver configurada, esse campo de cabeçalho não estará contido na resposta. Tipo: string |
x-obs-website-redirect-location |
Indica o local redirecionado para. Se o bucket for configurado com informações do site, esse parâmetro poderá ser definido para os metadados do objeto, de modo que o ponto de extremidade do site avalie a solicitação do objeto como um redirecionamento 301 para outro objeto no mesmo bucket ou para um URL externo. Tipo: string |
x-obs-delete-marker |
Indica se um objeto é um marcador de exclusão. Se o objeto não estiver marcado como excluído, a resposta não conterá esse cabeçalho. Tipo: booleano Valores válidos: true ou false O valor padrão é false. |
x-obs-version-id |
ID da versão do objeto. Se o objeto não tiver um número de versão especificado, a resposta não conterá esse cabeçalho. Valor válido: string de caracteres Não há valor padrão. |
x-obs-server-side-encryption |
Este cabeçalho é incluído em uma resposta se SSE-KMS for usado. Tipo: string Exemplo: x-obs-server-side-encryption:kms |
x-obs-server-side-encryption-kms-key-id |
Indica a ID da chave mestra. Este cabeçalho é incluído em uma resposta se SSE-KMS for usado. Tipo: string Formato:regionID:domainID:key/key_id regionID é o ID da região à qual a chave pertence. domainID é o ID da conta do locatário ao qual a chave pertence. key_id é o ID da chave usado nessa criptografia. Exemplo: x-obs-server-side-encryption-kms-key-id:region:domainiddomainiddomainiddoma0001:key/4f1cd4de-ab64-4807-920a-47fc42e7f0d0 |
x-obs-server-side-encryption-customer-algorithm |
Indica um algoritmo de descriptografia. Este cabeçalho é incluído em uma resposta se SSE-C é usado. Tipo: string Exemplo: x-obs-server-encryption-customer-algorithm:AES256 |
x-obs-server-side-encryption-customer-key-MD5 |
Indica o valor MD5 de uma chave usada para descriptografar objetos. Este cabeçalho é incluído em uma resposta se SSE-C é usado. Tipo: string Exemplo: x-obs-server-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ== |
x-obs-object-type |
Se o objeto não for normal, este campo de cabeçalho é retornado. O valor pode ser Appendable. Tipo: string |
x-obs-next-append-position |
Este campo de cabeçalho é retornado quando o objeto é um objeto anexável. Tipo: inteiro |
Elementos de resposta
Esta resposta não contém elementos.
Respostas de erro
Nenhuma resposta de erro especial é retornada. Para obter detalhes sobre respostas de erro, consulte Tabela 2.
Solicitação de exemplo 1
Baixe o objeto inteiro.
1 2 3 4 5 6 |
GET /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:24:33 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s= |
Resposta de exemplo 1
1 2 3 4 5 6 7 8 9 10 11 12 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: 8DF400000163D3F2A89604C49ABEE55E Accept-Ranges: bytes ETag: "3b46eaf02d3b6b1206078bb86a7b7013" Last-Modified: WED, 01 Jul 2015 01:20:29 GMT Content-Type: binary/octet-stream x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSQwxJ2I1VvxD/Xgwuw2G2RQax30gdXU Date: WED, 01 Jul 2015 04:24:33 GMT Content-Length: 4572 [4572 Bytes object content] |
Solicitação de exemplo 2
Baixar o bucket especificado de um objeto (baixar um intervalo de um objeto)..
1 2 3 4 5 6 7 |
GET /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: Mon, 14 Sep 2020 09:59:04 GMT Range:bytes=20-30 Authorization: OBS H4IPJX0TQTHTHEBQQCEC:mNPLWQMDWg30PTkAWiqJaLl3ALg= |
Baixar o intervalo especificado de um objeto (baixar vários intervalos de um objeto)..
1 2 3 4 5 6 7 |
GET /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: Mon, 14 Sep 2020 10:02:43 GMT Range:bytes=20-30,40-50 Authorization: OBS H4IPJX0TQTHTHEBQQCEC:ZwM7Vk2d7sD9o8zRsRKehgKQDkk= |
Resposta de exemplo 2
Baixar o intervalo especificado de um objeto (baixar um intervalo de um objeto)..
1 2 3 4 5 6 7 8 9 10 11 12 13 |
HTTP/1.1 206 Partial Content Server: OBS x-obs-request-id: 000001748C0DBC35802E360C9E869F31 Accept-Ranges: bytes ETag: "2200446c2082f27ed2a569601ca4e360" Last-Modified: Mon, 14 Sep 2020 01:16:20 GMT Content-Range: bytes 20-30/4583 Content-Type: binary/octet-stream x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSn2JHu4okx9NBRNZAvBGaws3lt3g31g Date: Mon, 14 Sep 2020 09:59:04 GMT Content-Length: 11 [ 11 Bytes object content] |
Baixar o intervalo especificado de um objeto (baixar vários intervalos de um objeto)..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
HTTP/1.1 206 Partial Content Server: OBS x-obs-request-id: 8DF400000163D3F2A89604C49ABEE55E Accept-Ranges: bytes ETag: "2200446c2082f27ed2a569601ca4e360" Last-Modified: Mon, 14 Sep 2020 01:16:20 GMT Content-Type: multipart/byteranges;boundary=35bcf444-e65f-4c76-9430-7e4a68dd3d26 x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSIBWFOVW8eeWujkqSnoIANC2mNR1cdF Date: Mon, 14 Sep 2020 10:02:43 GMT Content-Length: 288 --35bcf444-e65f-4c76-9430-7e4a68dd3d26 Content-type: binary/octet-stream Content-range: bytes 20-30/4583 [ 11 Bytes object content] --35bcf444-e65f-4c76-9430-7e4a68dd3d26 Content-type: binary/octet-stream Content-range: bytes 40-50/4583 [ 11 Bytes object content] --35bcf444-e65f-4c76-9430-7e4a68dd3d26 |
Solicitação de exemplo 3
Baixe uma imagem redimensionada.
1 2 3 4 5 6 |
GET /example.jpg?x-image-process=image/resize,w_100 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:20:51 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:9Nsx45WjaVxlLnxlO9awasXn83N= |
Resposta da exemplo 3
1 2 3 4 5 6 7 8 9 10 11 12 13 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: 8DF400000163D3F2A89604C49ABEE55E x-image-process:image/resize,w_100 Accept-Ranges: bytes ETag: "3b46eaf02d3b6b1206078bb86a7b7013" Last-Modified: WED, 01 Jul 2015 01:20:29 GMT Content-Type: image/jpeg x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSQwxJ2I1VvxD/Xgwuw2G2RQax30gdXU Date: WED, 01 Jul 2015 04:20:51 GMT Content-Length: 49 [ 49 Bytes object content] |
Solicitação de exemplo 4
Faça o download de um objeto se seu valor Etag corresponder.
1 2 3 4 5 6 7 |
GET /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:24:33 GMT If-Match: 682e760adb130c60c120da3e333a8b09 Authorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s= |
Resposta de exemplo 4-1 (Etag não correspondente)
Se o valor Etag do objeto armazenado não for 682e760adb130c60c120da3e333a8b09, o sistema exibirá uma mensagem indicando que o download falha.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
HTTP/1.1 412 Precondition Failed Server: OBS x-obs-request-id: 8DF400000163D3F2A89604C49ABEE55E Content-Type: application/xml x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSQwxJ2I1VvxD/Xgwuw2G2RQax30gdXU Date: WED, 01 Jul 2015 04:20:51 GMT <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Error> <Code>PreconditionFailed</Code> <Message>At least one of the pre-conditions you specified did not hold</Message> <RequestId>8DF400000163D3F2A89604C49ABEE55E</RequestId> <HostId>Hw0ZGaSKVm+uLOrCXXtx4Qn1aLzvoeblctVXRAqA7pty10mzUUW/yOzFue04lBqu</HostId> <Condition>If-Match</Condition> </Error> |
Resposta da amostra 4-2 (Download bem-sucedido)
Se o valor Etag do objeto armazenado for 682e760adb130c60c120da3e333a8b09, o download é bem-sucedido.
1 2 3 4 5 6 7 8 9 10 11 12 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: 5DEB00000164A21E1FC826C58F6BA001 Accept-Ranges: bytes ETag: "682e760adb130c60c120da3e333a8b09" Last-Modified: Mon, 16 Jul 2015 08:03:34 GMT Content-Type: application/octet-stream x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSbkdml1sLSvKnoHaRcOwRI+6+ustDwk Date: Mon, 16 Jul 2015 08:04:00 GMT Content-Length: 8 [ 8 Bytes object content] |
Solicitação de exemplo 5
Leve a assinatura no URL ao fazer o download de um objeto.
GET /object02?AccessKeyId=H4IPJX0TQTHTHEBQQCEC&Expires=1532688887&Signature=EQmDuOhWLUrzrzRNZxwS72CXeXM%3D HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: Fri, 27 Jul 2018 10:52:31 GMT
Resposta de exemplo 5
1 2 3 4 5 6 7 8 9 10 11 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: 804F00000164DB5E5B7FB908D3BA8E00 ETag: "682e760adb130c60c120da3e333a8b09" Last-Modified: Mon, 16 Jul 2015 08:03:34 GMT Content-Type: application/octet-stream x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTlpxILjhVK/heKOWIP8Wn2IWmQoerfw Date: Fri, 27 Jul 2018 10:52:31 GMT Content-Length: 8 [ 8 Bytes object content] |
Solicitação de exemplo 6
Use o parâmetro response-content-disposition para fazer download e renomear um objeto.
1 2 3 4 5 6 |
GET /object01?response-content-disposition=attachment; filename*=utf-8''name1 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:24:33 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s= |
Resposta de exemplo 6
1 2 3 4 5 6 7 8 9 10 11 12 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: 804F00000164DB5E5B7FB908D3BA8E00 ETag: "682e760adb130c60c120da3e333a8b09" Last-Modified: Mon, 16 Jul 2015 08:03:34 GMT Content-Type: application/octet-stream x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTlpxILjhVK/heKOWIP8Wn2IWmQoerfw Date: Fri, 27 Jul 2018 10:52:31 GMT Content-Length: 8 Content-Disposition: attachment; filename*=utf-8''name1 [ 8 Bytes object content] |
Solicitação de exemplo 7
Use o parâmetro attname para baixar e renomear um objeto.
1 2 3 4 5 6 |
GET /object01?attname=name1 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:24:33 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s= |
Resposta de exemplo 7
1 2 3 4 5 6 7 8 9 10 11 12 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: 804F00000164DB5E5B7FB908D3BA8E00 ETag: "682e760adb130c60c120da3e333a8b09" Last-Modified: Mon, 16 Jul 2015 08:03:34 GMT Content-Type: application/octet-stream x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTlpxILjhVK/heKOWIP8Wn2IWmQoerfw Date: Fri, 27 Jul 2018 10:52:31 GMT Content-Length: 8 Content-Disposition: attachment; filename*=utf-8''name1 [ 8 Bytes object content] |