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 - POST

Características

Carregamento de um objeto significa adicionar um objeto a um bucket. Para executar essa operação, você deve ter a permissão de gravação para o bucket.

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 campo de formulário. 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.

Você também pode carregar um objeto usando o método POST.

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.

Esta operação suporta encriptação do lado do servidor.

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 PUT, consulte Carregamento de objetos - PUT.

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 controle de versão for suspenso para um bucket, o ID de versão do objeto solicitado nesse bucket será null. Para obter detalhes sobre os status de versionamento de um bucket, consulte Configuração do versionamento para um bucket.

Sintaxe da solicitação

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
POST / HTTP/1.1 
Host: bucketname.obs.region.myhuaweicloud.com 
User-Agent: browser_data
Accept: file_types
Accept-Language: Regions
Accept-Encoding: encoding
Accept-Charset: character_set
Keep-Alive: 300 
Connection: keep-alive 
Content-Type: multipart/form-data; boundary=9431149156168 
Content-Length: length


--9431149156168 
Content-Disposition: form-data; name="key" 

acl 
--9431149156168 
Content-Disposition: form-data; name="success_action_redirect"
 
success_redirect 
--9431149156168 
Content-Disposition: form-data; name="content-Type" 

content_type 
--9431149156168 
Content-Disposition: form-data; name="x-obs-meta-uuid" 

uuid 
--9431149156168 
Content-Disposition: form-data; name="x-obs-meta-tag" 

metadata 
--9431149156168 
Content-Disposition: form-data; name="AccessKeyId" 

access-key-id 
--9431149156168 
Content-Disposition: form-data; name="policy" 

encoded_policy 
--9431149156168 
Content-Disposition: form-data; name="signature" 

signature= 
--9431149156168 
Content-Disposition: form-data; name="file"; filename="MyFilename" 
Content-Type: image/jpeg 

file_content 
--9431149156168 
Content-Disposition: form-data; name="submit" 

Upload to OBS 
--9431149156168--

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.

Se você deseja obter informações de configuração do CORS, deve usar os cabeçalhos em Tabela 1.

Tabela 1 Solicitar cabeçalhos para obter a configuração do CORS

Cabeçalho

Descrição

Obrigatório

Origin

Origem da solicitação de cross-domain especificada pela pré-solicitação. Geralmente, é um nome de domínio.

Tipo: string

Sim

Access-Control-Request-Headers

Indica os cabeçalhos HTTP de uma solicitação. A solicitação pode usar vários cabeçalhos HTTP.

Tipo: string

Não

Se uma mensagem de erro ainda for exibida depois que o CORS tiver sido configurado, retifique a falha consultando Por que um erro é relatado mesmo se o CORS tiver sido configurado?

Elementos de solicitação

Esta solicitação usa elementos de formulário. Tabela 2 descreve os elementos do formulário.

Tabela 2 Elementos do formulário

Parâmetro

Descrição

Obrigatório

file

Indica o conteúdo do objeto a ser carregado.

Tipo: conteúdo binário ou texto

Restrição: Este parâmetro deve ser o último parâmetro em um formulário. Caso contrário, os parâmetros após este parâmetro serão todos descartados. Além disso, cada solicitação contém apenas um parâmetro de arquivo.

Sim

key

Indica o nome do objeto a ser criado.

Tipo: string

Sim

AccessKeyId

Indica a chave de acesso (AK) do solicitante.

Tipo: string

Restrição: Este parâmetro é obrigatório se houver política de parâmetro de policy ou signature na solicitação.

Sim quando a restrição é atendida.

policy

Indica a política de segurança na solicitação. Para obter detalhes sobre o formato da política, consulte o formato da política em Autenticação de assinatura realizada na tabela carregada por meio de um navegador.

Tipo: string

Restrição: Esse parâmetro é obrigatório se o bucket fornecer o AccessKeyId (ou signature).

Sim quando a restrição é atendida.

signature

Indica uma cadeia de caracteres de assinatura calculada com base em StringToSign.

Tipo: string

Restrição: Esse parâmetro é obrigatório se o bucket fornecer o AccessKeyId (ou policy).

Sim quando a restrição é atendida.

token

Especifica a AK, a assinatura e a política de segurança do iniciador da solicitação. A prioridade de um token é maior do que a de um AK especificado, a assinatura da solicitação e a política de segurança do iniciador da solicitação.

Tipo: string

Exemplo:

HTML: <input type= "text" name="token" value="ak:signature:policy" />

Não

x-obs-acl

Ao criar um bucket, você pode adicionar esse cabeçalho para definir a política de controle de permissão para o bucket. As políticas comuns predefinidas são as seguintes: private, public-read, public-read-write, public-read-delivered, e public-read-write-delivered (para detalhes sobre as políticas, veja a configuração ACL usando campos do cabeçalho em ACL).

Tipo: string

Um exemplo é fornecido como segue:

Política: {"acl": "public-read" }

HTML: <input type="text" name="acl" value="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

Um exemplo é fornecido como segue:

Em POLÍTICA: {'grant-read': 'id=domainId1' },

Em HTML: <input type="text" name="grant-read" value="id=domainId1" />

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

Um exemplo é fornecido como segue:

Em POLÍTICA: {"grant-read-acp": "id=domainId1" },

Em HTML: <input type="text" name="grant-read-acp" value="id=domainId1" />

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

Um exemplo é fornecido como segue:

Em POLÍTICA: {"grant-write-acp": "id=domainId1" },

Em HTML: <input type="text" name="grant-write-acp" value="id=domainId1" />

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

Um exemplo é fornecido como segue:

Em POLÍTICA: {"grant-full-control": "id=domainId1" },

Em HTML: <input type="text" name="grant-full-control" value="id=domainId1" />

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.

Um exemplo é fornecido como segue:

Em POLÍTICA: {"storage-class": "STANDARD" },

Em HTML: <input type="text" name="x-obs-storage-class" value="STANDARD" />

Não

Cache-Control,

Content-Type,

Content-Disposition,

Content-Encoding

Expires

Cabeçalhos HTTP padrão. O OBS registra esses cabeçalhos. Se você baixar o objeto ou enviar a solicitação HEAD Object, esses valores de parâmetro serão retornados.

Tipo: string

Um exemplo é fornecido como segue:

Em POLÍTICA: ["starts-with", "$Content-Type", "text/"],

Em HTML: <input type="text" name="content-type" value="text/plain" />

Não

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

Um exemplo é fornecido como segue:

Em POLÍTICA: {"success_action_redirect": "http://123458.com"},

Em HTML: <input type="text" name="success_action_redirect" value="http://123458.com" />

Não

x-obs-meta-*

Indica metadados definidos pelo usuário. 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

Um exemplo é fornecido como segue:

Em POLÍTICA: {" x-obs-meta-test ": " test metadata " },

Em HTML: <input type="text" name=" x-obs-meta-test " value=" test metadata " />

Não

x-obs-persistent-headers

Ao criar um objeto, você pode adicionar o cabeçalho x-obs-persistent-headers em uma solicitação HTTP para especificar um ou mais cabeçalhos de resposta definidos pelo usuário. Cabeçalhos de resposta definidos pelo usuário serão retornados no cabeçalho de resposta quando você recuperar o objeto ou consultar os metadados do objeto.

Tipo: string

Formato: x-obs-persistent-headers: key1:base64_encode(value1),key2:base64_encode(value2)...

Nota: Itens, como key1 e key2, são cabeçalhos definidos pelo usuário. Se eles contiverem caracteres não-ASCII ou irreconhecíveis, eles podem ser codificados usando URL ou Base64. O servidor processa esses cabeçalhos como strings de caracteres, mas não os decodifica. Itens, como value1 e value2 são os valores dos cabeçalhos correspondentes. base64_encode indica que o valor é codificado usando Base64. Um cabeçalho definido pelo usuário e seu valor codificado em Base64 são conectados usando um (:) de dois pontos para formar um par chave-valor. Todos os pares chave-valor são separados com uma vírgula (,) e são colocados no cabeçalho x-obs-persistent-headers. O servidor então decodifica o valor carregado.

Exemplos:

Política: {"x-obs-persistent-headers": "key1:dmFsdWUx,key2:dmFsdWUy" },

HTML: <input type="text" name="x-obs-persistent-headers" value="key1:dmFsdWUx,key2:dmFsdWUy" />

O cabeçalho retornado para baixar o objeto ou obter os metadados do objeto é key1:value1 or key2:value2 respectivamente.

Restrições:

1. Cabeçalhos de resposta definidos pelo usuário especificados dessa maneira não podem ser prefixados com x-obs-, ou seja, você pode usar key1, em vez de x-obs-key1, como o prefixo.

2. O cabeçalho HTTP padrão, por exemplo, host/content-md5/origin/range/Content-Disposition, não pode ser usado.

3. O comprimento total do cabeçalho e dos metadados definidos pelo usuário não pode exceder 8 KB.

4. Se as mesmas chaves forem transferidas, separe os valores com vírgulas (,) e coloque esses valores na mesma chave para retornar.

Não

success_action_status

Indica o código de status retornado após a solicitação ser recebida com êxito. Os valores possíveis são 200, 201, e 204.

  • Se este parâmetro estiver definido como 200 ou 204, o corpo na mensagem de resposta do OBS estará vazio.
  • Se esse parâmetro for definido como 201, a mensagem de resposta do OBS contém um documento XML que descreve a resposta à solicitação.
  • Se o valor não estiver definido ou se estiver definido como um valor inválido, o OBS retornará um documento vazio com um código de status 204.

Tipo: string

Um exemplo é fornecido como segue:

Em POLÍTICA: ["starts-with", "$success_action_status", ""],

Em HTML: <input type="text" name="success_action_status" value="200" />

Não

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 desse objeto para outro objeto no mesmo bucket ou para um URL externo. O OBS armazena o valor desse cabeçalho nos metadados do objeto.

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

Não. 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: region:domainiddomainiddomainiddoma0001:key/4f1cd4de-ab64-4807-920a-47fc42e7f0d0

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

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.

Não. Este cabeçalho é necessário quando SSE-C é usado.

x-obs-server-side-encryption-customer-key

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.

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.

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).

Tipo: inteiro

Exemplo: x-obs-expires:3

Não

Sintaxe da resposta

1
2
3
4
5
HTTP/1.1 status_code
Content-Type: application/xml 
Location: location
Date: date
ETag: etag

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.

Tabela 3 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. Uma string null será retornada se o bucket que abriga o objeto tiver o versionamento suspenso.

Tipo: string

Access-Control-Allow-Origin

Indica que a origem é incluída na resposta se a origem na solicitação atender aos requisitos de configuração do CORS quando o CORS é configurado para buckets.

Tipo: string

Access-Control-Allow-Headers (Cabeçalhos de Acesso-Controle-Permitir)

Indica que os cabeçalhos serão incluídos na resposta se os cabeçalhos da solicitação atenderem aos requisitos de configuração do CORS quando o CORS for configurado para buckets.

Tipo: string

Access-Control-Max-Age

Indica MaxAgeSeconds na configuração CORS do servidor quando o CORS é configurado para buckets.

Tipo: inteiro

Access-Control-Allow-Methods

Indica que os métodos na regra são incluídos na resposta se Access-Control-Request-Method na solicitação atender aos requisitos de configuração do CORS quando o CORS estiver configurado para buckets.

Tipo: string

Os valores possíveis são GET, PUT, HEAD, POST e DELETE.

Access-Control-Expose-Headers

Indica ExposeHeader na configuração CORS de um servidor quando o CORS é configurado para buckets.

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 encriptação.

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 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

Indica 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==

Elementos de resposta

Esta resposta não envolve 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

Carregamento comum de POST

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
POST / HTTP/1.1
Date: WED, 01 Jul 2015 04:15:23 GMT
Host: examplebucket.obs.region.myhuaweicloud.com
Content-Type: multipart/form-data; boundary=7db143f50da2
Content-Length: 2424
Origin: www.example.com
Access-Control-Request-Headers:acc_header_1

--7db143f50da2
Content-Disposition: form-data; name="key"

object01
--7db143f50da2
Content-Disposition: form-data; name="acl"

public-read
--7db143f50da2 
Content-Disposition: form-data; name="content-type"

text/plain
--7db143f50da2
Content-Disposition: form-data; name="expires"

WED, 01 Jul 2015 04:16:15 GMT
--7db143f50da2
Content-Disposition: form-data; name="AccessKeyId"

14RZT432N80TGDF2Y2G2
--7db143f50da2
Content-Disposition: form-data; name="policy"

ew0KICAiZXhwaXJhdGlvbiI6ICIyMDE1LTA3LTAxVDEyOjAwOjAwLjAwMFoiLA0KICAiY29uZGl0aW9ucyI6IFsNCiAgICB7ImJ1Y2tldCI6ICJleG1hcGxlYnVja2V0IiB9LA0KICAgIHsiYWNsIjogInB1YmxpYy1yZWFkIiB9LA0KICAgIHsiRXhwaXJlcyI6ICIxMDAwIiB9LA0KICAgIFsiZXEiLCAiJGtleSIsICJvYmplY3QwMSJdLA0KICAgIFsic3RhcnRzLXdpdGgiLCAiJENvbnRlbnQtVHlwZSIsICJ0ZXh0LyJdLA0KICBdDQp9DQo=
--7db143f50da2
Content-Disposition: form-data; name="signature"

Vk6rwO0Nq09BLhvNSIYwSJTRQ+k=
--7db143f50da2
Content-Disposition: form-data; name="file"; filename="C:\Testtools\UpLoadFiles\object\1024Bytes.txt"
Content-Type: text/plain

01234567890
--7db143f50da2
Content-Disposition: form-data; name="submit"

Upload
--7db143f50da2--

Resposta de exemplo 1

Depois que o CORS é configurado para um bucket, a resposta contém as informações Access-Control-*.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
HTTP/1.1 204 No Content
x-obs-request-id: 90E2BA00C26C00000133B442A90063FD
x-obs-id-2: OTBFMkJBMDBDMjZDMDAwMDAxMzNCNDQyQTkwMDYzRkRBQUFBQUFBQWJiYmJiYmJi
Access-Control-Allow-Origin: www.example.com
Access-Control-Allow-Methods: POST,GET,HEAD,PUT
Access-Control-Allow-Headers: acc_header_01
Access-Control-Max-Age: 100
Access-Control-Expose-Headers: exp_header_01
Content-Type: text/xml
Location: http://examplebucket.obs.region.myhuaweicloud.com/object01
Date: WED, 01 Jul 2015 04:15:23 GMT
ETag: "ab7abb0da4bca5323ab6119bb5dcd296"

Solicitação de exemplo 2

Carregue um objeto com os x-obs-acl, classe de armazenamento e cabeçalho de redirecionamento transportados na mensagem de solicitação.

Antes da codificação, o conteúdo da política é o seguinte:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
    "expiration":"2018-07-17T04:54:35Z",
    "conditions":[
        {
            "content-type":"text/plain"
        },
        {
            "x-obs-storage-class":"WARM"
        },
        {
            "success_action_redirect":"http://www.example.com"
        },
        {
            "x-obs-acl":"public-read"
        },
        [
            "starts-with",
            "$bucket",
            ""
        ],
        [
            "starts-with",
            "$key",
            ""
        ]
    ]
}

Pedido da amostra:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
POST / HTTP/1.1
Host: examplebucket.obs.region.myhuaweicloud.com
Accept-Encoding: identity
Content-Length: 947
Content-Type: multipart/form-data; boundary=9431149156168
User-Agent: OBS/Test

--9431149156168
Content-Disposition: form-data; name="x-obs-acl"

public-read
--9431149156168
Content-Disposition: form-data; name="AccessKeyId"

H4IPJX0TQTHTHEBQQCEC
--9431149156168
Content-Disposition: form-data; name="key"

my-obs-object-key-demo
--9431149156168
Content-Disposition: form-data; name="signature"

WNwv8P1ZiWdqPQqjXeLmAfzPDAI=
--9431149156168
Content-Disposition: form-data; name="policy"

eyJleHBpcmF0aW9uIjoiMjAxOC0wNy0xN1QwODozNDoyM1oiLCAiY29uZGl0aW9ucyI6W3siY29udGVudC10eXBlIjoidGV4dC9wbGFpbiJ9LHsieC1vYnMtYWNsIjoicHVibGljLXJlYWQifSxbInN0YXJ0cy13aXRoIiwgIiRidWNrZXQiLCAiIl0sWyJzdGFydHMtd2l0aCIsICIka2V5IiwgIiJdXX0=
--9431149156168
Content-Disposition: form-data; name="content-type"

text/plain
--9431149156168
Content-Disposition: form-data; name="file"; filename="myfile"
Content-Type: text/plain

c2c6cd0f-898e-11e8-aab6-e567c91fb541
52b8e8a0-8481-4696-96f3-910635215a78

--9431149156168--

Resposta de exemplo 2

1
2
3
4
5
6
7
HTTP/1.1 204 No Content
Server: OBS
Location: http://examplebucket.obs.region.myhuaweicloud.com/my-obs-object-key-demo
ETag: "17a83fc8d431273405bd266114b7e034"
x-obs-request-id: 5DEB00000164A728A7C7F4E032214CFA
x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCSwj2PcBE0YcoLHUDO7GSj+rVByzjflA
Date: Tue, 17 Jul 2018 07:33:36 GMT