Carregamento de objetos - PUT
Funções
Após a criação do bucket no OBS, você pode usar essa operação para carregar um objeto no bucket. O upload de um objeto o adiciona a um bucket. Isso requer que os usuários tenham a operação de gravação.
O nome de cada objeto em um bucket deve ser exclusivo.
Com o versionamento não ativado, se um objeto a ser carregado tiver o mesmo nome que um objeto existente no bucket, o objeto recém-carregado substituirá o existente. Para proteger os dados de serem corrompidos durante a transmissão, você pode adicionar o parâmetro Content-MD5 no cabeçalho da solicitação. Depois de receber o pedido, OBS irá realizar uma verificação de consistência MD5. Se os dois valores MD5 forem inconsistentes, o sistema retornará uma mensagem de erro.
Você também pode especificar o valor do parâmetro x-obs-acl para configurar uma política de controle de acesso para o objeto. Se o parâmetro x-obs-acl não for especificado quando um usuário anônimo carregar um objeto, o objeto poderá ser acessado por todos os usuários do OBS por padrão.
Esta operação suporta encriptação do lado do servidor.
Para um único upload, o tamanho do objeto a ser carregado varia de [0, 5 GB]. Para fazer upload de um arquivo com mais de 5 GB, consulte Operações em carregamento de multiparte.
O OBS não possui pastas reais. Para facilitar o gerenciamento de dados, o OBS fornece um método para simular uma pasta adicionando uma barra (/) ao nome do objeto, por exemplo, test/123.jpg. Você pode simular o test como uma pasta e 123.jpg como o nome de um arquivo na pasta de test. No entanto, a chave do objeto permanece test/123.jpg. Os objetos nomeados nesse formato aparecem como pastas no console.
Diferenças entre os métodos PUT e POST
Os parâmetros são passados pelo cabeçalho da solicitação se o método PUT for usado para carregar objetos; se o método POST for usado para carregar objetos, os parâmetros serão passados pelo campo do formulário no corpo da mensagem.
Com o método PUT, você precisa especificar o nome do objeto no URL, mas o nome do objeto não é necessário com o método POST, que usa o nome de domínio do bucket como o URL. As linhas de solicitação dos dois métodos são as seguintes:
PUT /ObjectName HTTP/1.1
POST / HTTP/1.1
Para obter detalhes sobre o upload do POST, consulte Carregamento de objetos - POST.
Controle de versões
Se o controle de versão estiver ativado para um bucket, o sistema gerará automaticamente um ID de versão exclusivo para o objeto solicitado nesse bucket e retornará o ID de versão no cabeçalho de resposta x-obs-version-id. Se o versionamento for suspenso para o bucket, a versão do objeto será null. Para obter detalhes sobre os status de versionamento de um bucket, consulte.
Sintaxe da solicitação
1 2 3 4 5 6 7 8 |
PUT /ObjectName HTTP/1.1 Host: bucketname.obs.region.myhuaweicloud.com Content-Type: application/xml Content-Length: length Authorization: authorization Date: date <Optional Additional Header> <object Content> |
Parâmetros de solicitação
Esta solicitação não contém nenhum parâmetro.
Cabeçalhos de solicitação
Essa solicitação usa cabeçalhos comuns. Para mais detalhes, consulte Tabela 3. A solicitação pode usar cabeçalhos adicionais, conforme listado em Tabela 1.
O OBS suporta os seis cabeçalhos de solicitação HTTP: Cache-Control, Expires, Content-Encoding, Content-Disposition, Content-Type e Content-Language. Se esses cabeçalhos forem carregados em uma solicitação de upload de objeto, seus valores serão salvos. Você também pode chamar a API de modificação de metadados, fornecida pelo OBS, para alterar os valores dos seis cabeçalhos. Quando o objeto é baixado ou consultado, os valores salvos são definidos para os cabeçalhos HTTP correspondentes e retornados ao cliente.
Cabeçalho |
Descrição |
Obrigatório |
---|---|---|
Content-MD5 |
Base64-codificado 128-bit MD5 resumo da mensagem de acordo com RFC 1864. Tipo: string Exemplo: n58IG6hfM7vqI4K0vnWpog== |
Não |
x-obs-acl |
Ao criar um objeto, você pode adicionar esse cabeçalho para definir a política de controle de permissão para o objeto. As políticas comuns predefinidas são as seguintes: private, public-read, e public-read-write. Para obter detalhes sobre cada política, consulte a configuração ACL usando campos de cabeçalho na ACL. Tipo: string Nota: Este cabeçalho é uma política predefinida expressa numa cadeia de caracteres. Exemplo: x-obs-acl: public-read |
Não |
x-obs-grant-read |
Ao criar um objeto, você pode usar esse cabeçalho para autorizar todos os usuários em uma conta a permissão para ler objetos e obter metadados de objeto. Tipo: string Exemplo: x-obs-grant-read: id=domainID Se várias contas forem autorizadas, separe-as com vírgulas (,). |
Não |
x-obs-grant-read-acp |
Ao criar um objeto, você pode usar esse cabeçalho para autorizar todos os usuários em uma conta a permissão para obter a ACL do objeto. Tipo: string Exemplo: x-obs-grant-read-acp: id=domainID Se várias contas forem autorizadas, separe-as com vírgulas (,). |
Não |
x-obs-grant-write-acp |
Ao criar um objeto, você pode usar esse cabeçalho para autorizar todos os usuários em uma conta a permissão para gravar a ACL do objeto. Tipo: string Exemplo: x-obs-grant-write-acp: id=domainID Se várias contas forem autorizadas, separe-as com vírgulas (,). |
Não |
x-obs-grant-full-control |
Ao criar um objeto, você pode usar esse cabeçalho para autorizar todos os usuários em uma conta a permissão para ler o objeto, obter os metadados do objeto, obter a ACL do objeto e gravar a ACL do objeto. Tipo: string Exemplo: x-obs-grant-full-control: id=domainID Se várias contas forem autorizadas, separe-as com vírgulas (,). |
Não |
x-obs-storage-class |
Ao criar um objeto, você pode usar esse cabeçalho para especificar a classe de armazenamento do objeto. Se você não usar esse cabeçalho, a classe de armazenamento de objeto será a classe de armazenamento padrão do bucket. Tipo: string O OBS fornece três classes de armazenamento: Padrão (STANDARD), Acesso Infrequente (WARM) e Arquivo (COLD). Portanto, os valores para este elemento podem ser STANDARD, WARM, e COLD. Esses valores são sensíveis a maiúsculas e minúsculas. Exemplo: x-obs-storage-class: STANDARD |
Não |
x-obs-meta-* |
Ao criar um objeto, você pode usar um cabeçalho começando com x-obs-meta- para definir os metadados do objeto em uma solicitação HTTP. Os metadados definidos pelo usuário serão retornados no cabeçalho da resposta quando você recuperar ou consultar os metadados do objeto. Para obter mais informações, consulte Gerenciamento de metadados de objeto. Tipo: string Exemplo: x-obs-meta-test: test metadata |
Não |
x-obs-persistent-headers |
When creating an object, you can add the x-obs-persistent-headers header in an HTTP request to specify one or more user-defined response headers. User-defined response headers will be returned in the response header when you retrieve the object or query the object metadata. Type: string Format: x-obs-persistent-headers: key1:base64_encode(value1),key2:base64_encode(value2)... Note: Items, such as key1 and key2, are user-defined headers. If they contain non-ASCII or unrecognizable characters, they can be encoded using URL or Base64. The server processes these headers as character strings, but does not decode them. Items, such as value1 and value2 are the values of the corresponding headers. base64_encode indicates that the value is encoded using Base64. A user-defined header and its Base64-encoded value are connected using a colon (:) to form a key-value pair. All key-value pairs are separated with a comma (,) and are placed in the x-obs-persistent-headers header. The server then decodes the uploaded value. Example: x-obs-persistent-headers: key1:dmFsdWUx,key2:dmFsdWUy The returned header for downloading the object or obtaining the object metadata is key1:value1 or key2:value2 respectively. Constraints: 1. User-defined response headers specified in this way cannot be prefixed with x-obs-, that is, you can use key1, instead of x-obs-key1, as the prefix. 2. The standard HTTP header, for example, host/content-md5/origin/range/Content-Disposition, cannot be used. 3. The total length of the header and user-defined metadata cannot exceed 8 KB. 4. If the same keys are transferred, separate values with commas (,) and place these values in the same key for return. |
No |
x-obs-website-redirect-location |
Se um bucket estiver configurado com a função de hospedagem de sites estáticos, ele redirecionará as solicitações do objeto para outro objeto no mesmo bucket ou para um URL externo. O OBS armazena o valor desse cabeçalho nos metadados do objeto. No exemplo a seguir, o cabeçalho da solicitação define o redirecionamento para um objeto (anotherPage.html) no mesmo bucket: x-obs-website-redirect-location:/anotherPage.html No exemplo a seguir, o cabeçalho da solicitação define o redirecionamento do objeto para uma URL externa: x-obs-website-redirect-location:http://www.example.com/ Tipo: string Não há valor padrão. Restrição: O valor deve ser prefixado por uma barra (/), http://, ou https://. O comprimento do valor não pode exceder 2 KB. |
Não |
x-obs-server-side-encryption |
Indica que SSE-KMS é usado. Tipo: string Exemplo: x-obs-server-side-encryption:kms |
Se algum processo é anormal: Esse cabeçalho é necessário quando o SSE-KMS é usado. |
x-obs-server-side-encryption-kms-key-id |
ID da chave mestra. Este cabeçalho é usado no modo SSE-KMS. Se o cliente não fornecer a chave mestra, a chave mestra padrão será usada. Tipo: string Os dois formatos a seguir são suportados: 1. regionID:domainID:key/key_id 2. 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 criado em DEW. Exemplo: 1. x-obs-server-side-encryption-kms-key-id: região:domainiddomainiddomainiddoma0001:key/4f1cd4de-ab64-4807-920a-47fc42e7f0d0 ou 2. x-obs-server-side-encryption-kms-key-id:4f1cd4de-ab64-4807-920a-47fc42e7f0d0 |
Não |
x-obs-server-side-encryption-customer-algorithm |
Algoritmo de encriptação. O cabeçalho é usado no modo SSE-C. Tipo: string Exemplo: x-obs-server-encryption-customer-algorithm:AES256 Limitaçõ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. |
Não. Este cabeçalho é necessário apenas quando SSE-C é 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 criptografar 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. |
Não. 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. |
success-action-redirect |
Indica o endereço (URL) para o qual uma solicitação respondida com sucesso é redirecionada.
Tipo: string |
Não |
x-obs-expires |
Indica o tempo de expiração de um objeto, em dias. Um objeto será automaticamente excluído quando expirar (calculado a partir do tempo da última modificação do objeto). Esse campo pode ser configurado somente quando um objeto é carregado e não pode ser modificado por meio da API de modificação de metadados. Tipo: inteiro Exemplo: x-obs-expires:3 |
Não |
Elementos de solicitação
Esta solicitação não contém nenhum elemento. Seu corpo contém apenas o conteúdo do objeto solicitado.
Sintaxe da resposta
1 2 3 |
HTTP/1.1 status_code Content-Length: length Content-Type: type |
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 2.
Cabeçalho |
Descrição |
---|---|
x-obs-version-id |
ID da versão do objeto. Se o controle de versão estiver ativado para o bucket, o número da versão do objeto será retornado. Tipo: string |
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-encryption-kms-key-id:region:domainiddomainiddoma0001:key/4f1cd4de-ab64-4807-920a-47fc42e 7f0d0 |
x-obs-server-side-encryption-customer-algorithm |
Um algoritmo de encriptação. 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 |
O valor MD5 de uma chave usada para criptografar 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-storage-class |
Esse cabeçalho é retornado quando a classe de armazenamento de um objeto não é Padrão. Opções de valor: WARM e COLD Tipo: string |
Elementos de resposta
Esta resposta não contém nenhum elemento.
Respostas de erro
Nenhuma resposta de erro especial é retornada. Para obter detalhes sobre respostas de erro, consulte Tabela 2.
Solicitação de exemplo 1
Carregar um objeto.
1 2 3 4 5 6 7 8 9 10 |
PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:11:15 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:gYqplLq30dEX7GMi2qFWyjdFsyw= Content-Length: 10240 Expect: 100-continue [1024 Byte data content] |
Resposta de exemplo 1
1 2 3 4 5 6 7 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: BF2600000164364C10805D385E1E3C67 ETag: "d41d8cd98f00b204e9800998ecf8427e" x-obs-id-2: 32AAAWJAMAABAAAQAAEAABAAAQAAEAABCTzu4Jp2lquWuXsjnLyPPiT3cfGhqPoY Date: WED, 01 Jul 2015 04:11:15 GMT Content-Length: 0 |
Solicitação de exemplo 2
Defina a ACL ao carregar um objeto.
1 2 3 4 5 6 7 8 9 10 11 |
PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:13:55 GMT x-obs-grant-read:id=52f24s3593as5730ea4f722483579ai7,id=a93fcas852f24s3596ea8366794f7224 Authorization: OBS H4IPJX0TQTHTHEBQQCEC:gYqplLq30dEX7GMi2qFWyjdFsyw= Content-Length: 10240 Expect: 100-continue [1024 Byte data content] |
Resposta de exemplo 2
1 2 3 4 5 6 7 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: BB7800000164845759E4F3B39ABEE55E ETag: "d41d8cd98f00b204e9800998ecf8427e" x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSReVRNuas0knI+Y96iXrZA7BLUgj06Z Date: WED, 01 Jul 2015 04:13:55 GMT Content-Length: 0 |
Solicitação de exemplo 3
Carregar objetos quando o versionamento estiver ativado para o bucket.
1 2 3 4 5 6 7 8 9 10 11 |
PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:17:12 GMT x-obs-storage-class: WARM Authorization: OBS H4IPJX0TQTHTHEBQQCEC:uFVJhp/dJqj/CJIVLrSZ0gpw3ng= Content-Length: 10240 Expect: 100-continue [1024 Byte data content] |
Resposta de exemplo 3
1 2 3 4 5 6 7 8 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: DCD2FC9CAB78000001439A51DB2B2577 ETag: "d41d8cd98f00b204e9800998ecf8427e" X-OBS-ID-2: GcVgfeOJHx8JZHTHrRqkPsbKdB583fYbr3RBbHT6mMrBstReVILBZbMAdLiBYy1l Date: WED, 01 Jul 2015 04:17:12 GMT x-obs-version-id: AAABQ4q2M9_c0vycq3gAAAAAVURTRkha Content-Length: 0 |
Solicitação de exemplo 4
MD5 é transportado quando um objeto é carregado.
1 2 3 4 5 6 7 8 9 10 11 |
PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:17:50 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:uFVJhp/dJqj/CJIVLrSZ0gpw3ng= Content-Length: 10 Content-MD5: 6Afx/PgtEy+bsBjKZzihnw== Expect: 100-continue 1234567890 |
Resposta de exemplo 4
1 2 3 4 5 6 7 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: BB7800000164B165971F91D82217D105 X-OBS-ID-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCSEKhBpS4BB3dSMNqMtuNxQDD9XvOw5h ETag: "1072e1b96b47d7ec859710068aa70d57" Date: WED, 01 Jul 2015 04:17:50 GMT Content-Length: 0 |
Solicitação de exemplo 5
A função de hospedagem do site é configurada para o bucket. Configure o redirecionamento para o download do objeto ao fazer o upload do objeto.
1 2 3 4 5 6 7 8 9 10 11 |
PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:17:12 GMT x-obs-website-redirect-location: http://www.example.com/ Authorization: OBS H4IPJX0TQTHTHEBQQCEC:uFVJhp/dJqj/CJIVLrSZ0gpw3ng= Content-Length: 10240 Expect: 100-continue [1024 Byte data content] |
Resposta de exemplo 5
1 2 3 4 5 6 7 8 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: DCD2FC9CAB78000001439A51DB2B2577 x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTmxB5ufMj/7/GzP8TFwTbp33u0xhn2Z ETag: "1072e1b96b47d7ec859710068aa70d57" Date: WED, 01 Jul 2015 04:17:12 GMT x-obs-version-id: AAABQ4q2M9_c0vycq3gAAAAAVURTRkha Content-Length: 0 |
Solicitação de exemplo 6
Carregue um objeto e carregue a assinatura no URL..
PUT /object02?AccessKeyId=H4IPJX0TQTHTHEBQQCEC&Expires=1532688887&Signature=EQmDuOhWLUrzrzRNZxwS72CXeXM%3D HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Content-Length: 1024 [1024 Byte data content]
Resposta de exemplo 6
1 2 3 4 5 6 7 8 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: DCD2FC9CAB78000001439A51DB2B2577 x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTmxB5ufMj/7/GzP8TFwTbp33u0xhn2Z ETag: "1072e1b96b47d7ec859710068aa70d57" Date: Fri, 27 Jul 2018 10:52:31 GMT x-obs-version-id: AAABQ4q2M9_c0vycq3gAAAAAVURTRkha Content-Length: 0 |
Solicitação de exemplo 7
Carregar um objeto de uma classe de armazenamento especificada.
1 2 3 4 5 6 7 8 9 10 11 |
PUT /object01 HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 04:15:07 GMT x-obs-storage-class: WARM Authorization: OBS H4IPJX0TQTHTHEBQQCEC:uFVJhp/dJqj/CJIVLrSZ0gpw3ng= Content-Length: 10240 Expect: 100-continue [1024 Byte data content] |
Resposta de exemplo 7
1 2 3 4 5 6 7 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: BB7800000164846A2112F98BF970AA7E ETag: "d41d8cd98f00b204e9800998ecf8427e" x-obs-id-2: a39E0UgAIAABAAAQAAEAABAAAQAAEAABCTPOUJu5XlNyU32fvKjM/92MQZK2gtoB Date: WED, 01 Jul 2015 04:15:07 GMT Content-Length: 0 |