Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2022-11-14 GMT+08:00

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.

Tabela 1 Cabeçalhos de solicitação

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.

  • Se o valor for válido e a solicitação for bem-sucedida, o OBS retornará o código de status 303. Location contém success_action_redirect, bem como o nome do bucket, o nome do objeto e o ETag do objeto.
  • Se este parâmetro for inválido, o OBS ignorará este parâmetro. O código de resposta é 204, e o Location é o endereço do objeto.

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.

Tabela 2 Parâmetros adicionais de cabeçalho de resposta

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