Colocar bloco a partir de URLPut Block From URL

A Put Block From URL operação cria um novo bloco a ser comprometido como parte de uma bolha onde o conteúdo é lido a partir de um URL.The Put Block From URL operation creates a new block to be committed as part of a blob where the contents are read from a URL. Esta API está disponível 2018-03-28a partir da versão .This API is available starting in version 2018-03-28.

PedirRequest

O Put Block From URL pedido pode ser construído da seguinte forma.The Put Block From URL request may be constructed as follows. Recomenda-se https.HTTPS is recommended. Substitua a minha conta com o nome da sua conta de armazenamento:Replace myaccount with the name of your storage account:

PUT Method Request URIPUT Method Request URI Versão HTTPHTTP Version
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=block&blockid=id HTTP/1.1HTTP/1.1

Serviço de Armazenamento Emulado URIEmulated Storage Service URI

Ao efazer um pedido contra o serviço de armazenamento emulado, 127.0.0.1:10000especifique o nome de anfitrião do emulador e a porta de serviço Blob como , seguido do nome da conta de armazenamento emulado:When making a request against the emulated storage service, specify the emulator hostname and Blob service port as 127.0.0.1:10000, followed by the emulated storage account name:

PUT Method Request URIPUT Method Request URI Versão HTTPHTTP Version
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=block&blockid=id HTTP/1.1HTTP/1.1

Para mais informações, consulte Utilizar o Emuladorde Armazenamento Azure para Desenvolvimento e Teste .For more information, see Using the Azure Storage Emulator for Development and Testing.

Parâmetros do URIURI Parameters

ParâmetroParameter DescriçãoDescription
blockid Necessário.Required. Um valor de cadeia Base64 válido que identifica o bloco.A valid Base64 string value that identifies the block. Antes da codificação, a corda deve ter menos ou igual a 64 bytes de tamanho.Prior to encoding, the string must be less than or equal to 64 bytes in size.

Para uma dada bolha, o comprimento do blockid valor especificado para o parâmetro deve ser do mesmo tamanho para cada bloco.For a given blob, the length of the value specified for the blockid parameter must be the same size for each block.

Note que a cadeia Base64 deve ser codificada por URL.Note that the Base64 string must be URL-encoded.
timeout Opcional.Optional. O timeout parâmetro é expresso em segundos.The timeout parameter is expressed in seconds. Para mais informações, consulte os tempos de definição para operaçõesde serviço blob .For more information, see Setting Timeouts for Blob Service Operations.

Cabeçalhos dos PedidosRequest Headers

A tabela a seguir descreve os cabeçalhos de pedido necessários e opcionais.The following table describes required and optional request headers.

Cabeçalho do PedidoRequest Header DescriçãoDescription
Authorization Necessário.Required. Especifica o regime de autorização, o nome da conta e a assinatura.Specifies the authorization scheme, account name, and signature. Consulte os pedidos de Autorização para o Armazenamento Azure para mais informações.See Authorize requests to Azure Storage for more information.
Date ou x-ms-dateDate or x-ms-date Necessário.Required. Especifica a Hora Universal Coordenada (UTC) do pedido.Specifies the Coordinated Universal Time (UTC) for the request. Para mais informações, consulte Autorizar pedidos de Armazenamento Azure.For more information, see Authorize requests to Azure Storage.
x-ms-version Necessário para todos os pedidos autorizados.Required for all authorized requests. Especifica a versão da operação a utilizar para este pedido.Specifies the version of the operation to use for this request. Para mais informações, consulte a Versão ingestão dos Serviços de Armazenamento Do Azure.For more information, see Versioning for the Azure Storage Services. Para Put Block From URL, a versão tem de ser 2018-03-28 ou mais recente.For Put Block From URL, the version has to be 2018-03-28 or newer.
Content-Length Necessário.Required. Especifica o número de bytes que estão a ser transmitidos no organismo de pedido.Specifies the number of bytes being transmitted in the request body. O valor deste cabeçalho deve ser fixado a zero.The value of this header must be set to zero. Quando o comprimento não for nulo, a operação falhará com o código de estado 400 (Pedido Mau).When the length is not zero, the operation will fail with the status code 400 (Bad Request).
x-ms-copy-source:name Necessário.Required. Especifica o URL da bolha de origem.Specifies the URL of the source blob. O valor pode ser um URL de até 2 KB de comprimento que especifica uma bolha.The value may be a URL of up to 2 KB in length that specifies a blob. O valor deve ser codificado por URL, tal como aparece num pedido URI.The value should be URL-encoded as it would appear in a request URI. A bolha de origem deve ser pública ou autorizada através de uma assinatura de acesso partilhado.The source blob must either be public or must be authorized via a shared access signature. Se a bolha de origem for pública, não é necessária autorização para realizar a operação.If the source blob is public, no authorization is required to perform the operation. Aqui estão alguns exemplos de URLs de objeto de origem:Here are some examples of source object URLs:

- https://myaccount.blob.core.windows.net/mycontainer/myblob
- https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
x-ms-source-range Opcional.Optional. Carrega apenas os bytes da bolha no URL de origem na gama especificada.Uploads only the bytes of the blob in the source URL in the specified range. Se isto não for especificado, todo o conteúdo da bolha de origem é carregado como um único bloco.If this is not specified, the entire source blob contents are uploaded as a single block. Consulte especificar o cabeçalho de alcance para operações de serviço blob para obter mais informações.See Specifying the Range Header for Blob Service Operations for more information.
x-ms-source-content-md5 Opcional.Optional. Um hash MD5 do conteúdo do bloco a partir do URI.An MD5 hash of the block content from the URI. Este hash é usado para verificar a integridade do bloco durante o transporte dos dados do URI.This hash is used to verify the integrity of the block during transport of the data from the URI. Quando este cabeçalho é especificado, o serviço de armazenamento compara o hash do conteúdo que chegou da fonte de cópia com este valor cabeçalho.When this header is specified, the storage service compares the hash of the content that has arrived from the copy-source with this header value.

Note que este hash md5 não está armazenado com a bolha.Note that this md5 hash is not stored with the blob.

Se os dois hashes não coincidirem, a operação falhará com o código de erro 400 (Pedido Mau).If the two hashes do not match, the operation will fail with error code 400 (Bad Request).
x-ms-source-content-crc64 Opcional.Optional. Um hash CRC64 do conteúdo do bloco a partir do URI.A CRC64 hash of the block content from the URI. Este hash é usado para verificar a integridade do bloco durante o transporte dos dados do URI.This hash is used to verify the integrity of the block during transport of the data from the URI. Quando este cabeçalho é especificado, o serviço de armazenamento compara o hash do conteúdo que chegou da fonte de cópia com este valor cabeçalho.When this header is specified, the storage service compares the hash of the content that has arrived from the copy-source with this header value.

Note que este hash CRC64 não está armazenado com a bolha.Note that this CRC64 hash is not stored with the blob.

Se os dois hashes não coincidirem, a operação falhará com o código de erro 400 (Pedido Mau).If the two hashes do not match, the operation will fail with error code 400 (Bad Request).

Se x-ms-source-content-md5 ambos x-ms-source-content-crc64 e cabeçalhos estiverem presentes, o pedido falhará com um 400 (Pedido Mau).If both x-ms-source-content-md5 and x-ms-source-content-crc64 headers are present, the request will fail with a 400 (Bad Request).

Este cabeceamento é suportado nas versões 2019-02-02 ou posteriormente.This header is supported in versions 2019-02-02 or later.
x-ms-lease-id:<ID> Necessário se a bolha tiver um arrendamento ativo.Required if the blob has an active lease. Para efetuar esta operação numa bolha com um contrato de arrendamento ativo, especifique o ID de locação válido para este cabeçalho.To perform this operation on a blob with an active lease, specify the valid lease ID for this header.
x-ms-client-request-id Opcional.Optional. Fornece um valor opaco gerado pelo cliente com um limite de caracteres de 1 KB que é gravado nos registos de análise quando o registo de análise de armazenamento está ativado.Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. Recomenda-se a utilização deste cabeçalho para correlacionar as atividades do lado do cliente com os pedidos recebidos pelo servidor.Using this header is highly recommended for correlating client-side activities with requests received by the server. Para mais informações, consulte sobre o armazenamento Analytics Logging e o Azure Logging: Using Logs to Track Storage Requests.For more information, see About Storage Analytics Logging and Azure Logging: Using Logs to Track Storage Requests.

Cabeçalhos de pedido (chaves de encriptação fornecidas pelo cliente)Request Headers (Customer-provided encryption keys)

A partir da versão 2019-02-02, os seguintes cabeçalhos podem ser especificados no pedido de encriptação de uma bolha com uma chave fornecida pelo cliente.Beginning with version 2019-02-02, the following headers may be specified on the request to encrypt a blob with a customer-provided key. A encriptação com uma chave fornecida pelo cliente (e o conjunto correspondente de cabeçalhos) é opcional.Encryption with a customer-provided key (and the corresponding set of headers) is optional.

Cabeçalho do pedidoRequest header DescriçãoDescription
x-ms-encryption-key Necessário.Required. A chave de encriptação AES-256 codificada pela Base64.The Base64-encoded AES-256 encryption key.
x-ms-encryption-key-sha256 Necessário.Required. O hash SHA256 codificado pela Base64 da chave de encriptação.The Base64-encoded SHA256 hash of the encryption key.
x-ms-encryption-algorithm: AES256 Necessário.Required. Especifica o algoritmo a utilizar para encriptação.Specifies the algorithm to use for encryption. O valor deste cabeçalho deve ser. AES256The value of this header must be AES256.

Corpo do PedidoRequest Body

Sem corpo de pedido.No request body.

Pedido de AmostraSample Request

Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=block&blockid=AAAAAA%3D%3D HTTP/1.1  
  
Request Headers:  
x-ms-version: 2018-03-28  
x-ms-date: Sat, 31 Mar 2018 14:37:35 GMT    
Authorization: SharedKey myaccount:J4ma1VuFnlJ7yfk/Gu1GxzbfdJloYmBPWlfhZ/xn7GI=  
Content-Length: 0
x-ms-copy-source: https://myaccount.blob.core.windows.net/mycontainer/myblob
x-ms-source-range: bytes=0-499

RespostaResponse

A resposta inclui um código de estado HTTP e um conjunto de cabeçalhos de resposta.The response includes an HTTP status code and a set of response headers.

Código de EstadoStatus Code

Uma operação bem sucedida devolve o código de estado 201 (Criado).A successful operation returns status code 201 (Created).

Para obter informações sobre códigos de estado, consulte Códigos de Estado e de Erro.For information about status codes, see Status and Error Codes.

Cabeçalhos de RespostaResponse Headers

A resposta para esta operação inclui os seguintes cabeçalhos.The response for this operation includes the following headers. A resposta também pode incluir cabeçalhos HTTP padrão adicionais.The response may also include additional standard HTTP headers. Todos os cabeçalhos padrão estão em conformidade com a especificação do protocolo HTTP/1.1.All standard headers conform to the HTTP/1.1 protocol specification.

Cabeçalho de respostaResponse header DescriçãoDescription
Content-MD5 Este cabeçalho é devolvido para que o cliente possa verificar a integridade do conteúdo da mensagem.This header is returned so that the client can check for message content integrity. O valor deste cabeçalho é calculado pelo serviço Blob; não é necessariamente o mesmo valor especificado nos cabeçalhos de pedido.The value of this header is computed by the Blob service; it is not necessarily the same value specified in the request headers. Para versões 2019-02-02 ou posteriores, este cabeceamento só é devolvido quando o pedido tiver este cabeceamento.For versions 2019-02-02 or later, This header is only returned when the request has this header.
x-ms-content-crc64 Para versões 2019-02-02 ou posteriores, este cabeçalho é devolvido para que o cliente possa verificar a integridade do conteúdo da mensagem.For versions 2019-02-02 or later, This header is returned so that the client can check for message content integrity. O valor deste cabeçalho é calculado pelo serviço Blob; não é necessariamente o mesmo valor especificado nos cabeçalhos de pedido.The value of this header is computed by the Blob service; it is not necessarily the same value specified in the request headers.

Este cabeceamento é x-ms-source-content-md5 devolvido quando o cabeçalho não está presente no pedido.This header is returned when x-ms-source-content-md5 header is not present in the request.
x-ms-request-id Este cabeçalho identifica exclusivamente o pedido que foi feito e pode ser usado para resolver problemas do pedido.This header uniquely identifies the request that was made and can be used for troubleshooting the request. Para mais informações, consulte Operações API de resolução de problemas.For more information, see Troubleshooting API Operations.
x-ms-version Indica a versão do serviço Blob utilizado para executar o pedido.Indicates the version of the Blob service used to execute the request.
Date Um valor utc data/hora gerado pelo serviço que indica o momento em que a resposta foi iniciada.A UTC date/time value generated by the service that indicates the time at which the response was initiated.
x-ms-request-server-encrypted: true/false Versão 2015-12-11 ou mais recente.Version 2015-12-11 or newer. O valor deste cabeçalho true é definido para se o conteúdo do bloco for false encriptado com sucesso usando o algoritmo especificado, e de outra forma.The value of this header is set to true if the contents of the block are successfully encrypted using the specified algorithm, and false otherwise.
x-ms-encryption-key-sha256 Versão 2019-02-02 ou mais recente.Version 2019-02-02 or newer. Este cabeçalho é devolvido se o pedido utilizar uma chave fornecida pelo cliente para encriptação, para que o cliente possa garantir que o conteúdo do pedido é encriptado com sucesso usando a chave fornecida.This header is returned if the request used a customer-provided key for encryption, so the client can ensure the contents of the request are successfully encrypted using the provided key.
x-ms-client-request-id Este cabeçalho pode ser usado para resolução de problemas pedidos e respostas correspondentes.This header can be used to troubleshoot requests and corresponding responses. O valor deste cabeçalho é igual x-ms-client-request-id ao valor do cabeçalho se estiver presente no pedido e o valor for no máximo 1024 caracteres ASCII visíveis.The value of this header is equal to the value of the x-ms-client-request-id header if it is present in the request and the value is at most 1024 visible ASCII characters. Se x-ms-client-request-id o cabeçalho não estiver presente no pedido, este cabeçalho não estará presente na resposta.If the x-ms-client-request-id header is not present in the request, this header will not be present in the response.

Resposta de AmostraSample Response

Response Status:  
HTTP/1.1 201 Created  
  
Response Headers:  
Transfer-Encoding: chunked  
x-ms-content-crc64: 77uWZTolTHU  
Date: Sat, 31 Mar 2018 23:47:09 GMT  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  

AutorizaçãoAuthorization

Esta operação pode ser chamada pelo proprietário da conta e por qualquer pessoa com uma Assinatura de Acesso Partilhado que tenha permissão para escrever a esta bolha ou ao seu contentor.This operation can be called by the account owner and by anyone with a Shared Access Signature that has permission to write to this blob or its container.

ObservaçõesRemarks

Put Block From URLcarrega um bloco para futura inclusão em uma bolha de bloco.Put Block From URL uploads a block for future inclusion in a block blob. Uma bolha de bloco pode incluir um máximo de 50.000 blocos.A block blob can include a maximum of 50,000 blocks. Cada bloco pode ter um tamanho diferente, até um máximo de 100 MB.Each block can be a different size, up to a maximum of 100 MB. O tamanho máximo de uma bolha de bloco é, portanto, ligeiramente superior a 4,75 TB (100 MB X 50.000 blocos).The maximum size of a block blob is therefore slightly more than 4.75 TB (100 MB X 50,000 blocks).

Uma bolha pode ter um máximo de 100.000 blocos não comprometidos a qualquer momento.A blob can have a maximum of 100,000 uncommitted blocks at any given time. O conjunto de blocos não comprometidos não pode exceder 9,52 TB no tamanho total.The set of uncommitted blocks cannot exceed 9.52 TB in total size. Se este máximo for ultrapassado, o código de estado de devolução do serviço 409 (RequestEntityTooLargeBlockCountExceedsLimit).If this maximum is exceeded, the service returns status code 409 (RequestEntityTooLargeBlockCountExceedsLimit).

Depois de ter carregado um conjunto de blocos, pode criar ou atualizar a bolha no servidor a partir deste conjunto, ligando para a operação Lista de Bloqueio.After you have uploaded a set of blocks, you can create or update the blob on the server from this set by calling the Put Block List operation. Cada bloco no conjunto é identificado por um id de bloco que é único dentro dessa bolha.Each block in the set is identified by a block ID that is unique within that blob. Os IDs de bloco são traçados para uma bolha particular, para que diferentes bolhas possam ter blocos com as mesmas identificações.Block IDs are scoped to a particular blob, so different blobs can have blocks with same IDs.

Se você Put Block From URL chamar uma bolha que ainda não existe, uma nova bolha de bloco é criada com um comprimento de conteúdo de 0.If you call Put Block From URL on a blob that does not yet exist, a new block blob is created with a content length of 0. Esta bolha é enumerada List Blobs pela include=uncommittedblobs operação se a opção for especificada.This blob is enumerated by the List Blobs operation if the include=uncommittedblobs option is specified. O bloco ou blocos que carregou Put Block List não estão comprometidos até que chame a nova bolha.The block or blocks that you uploaded are not committed until you call Put Block List on the new blob. Uma bolha criada desta forma é mantida no servidor por uma semana; se não tiver adicionado mais blocos ou blocos comprometidos à bolha dentro desse período de tempo, então a bolha é recolhida.A blob created this way is maintained on the server for a week; if you have not added more blocks or committed blocks to the blob within that time period, then the blob is garbage collected.

Um bloco que tenha sido carregado Put Block From URL com sucesso com a operação não se Put Block Listtorna parte de uma bolha até que seja comprometido com .A block that has been successfully uploaded with the Put Block From URL operation does not become part of a blob until it is committed with Put Block List. Antes Put Block List é chamado para cometer a nova ou atualizada bolha, quaisquer chamadas para obter Blob devolver o conteúdo blob sem a inclusão do bloco não comprometido.Before Put Block List is called to commit the new or updated blob, any calls to Get Blob return the blob contents without the inclusion of the uncommitted block.

Se fizer o upload de um bloco que tenha o mesmo bloco de identificação que outro bloco que Put Block List ainda não tenha sido comprometido, o último bloco carregado com esse ID será comprometido na próxima operação bem sucedida.If you upload a block that has the same block ID as another block that has not yet been committed, the last uploaded block with that ID will be committed on the next successful Put Block List operation.

Depois Put Block List de chamados, todos os blocos não comprometidos especificados na lista de blocos são cometidos como parte da nova bolha.After Put Block List is called, all uncommitted blocks specified in the block list are committed as part of the new blob. Quaisquer blocos não comprometidos que não tenham sido especificados na lista de blocos para a bolha serão recolhidos e removidos do serviço Blob.Any uncommitted blocks that were not specified in the block list for the blob will be garbage collected and removed from the Blob service. Quaisquer blocos não comprometidos também serão Put Block From URL recolhidos lixo se não houver chamadas bem sucedidas para ou Put Block List na mesma bolha no prazo de uma semana após a última operação bem sucedida. Put Block From URLAny uncommitted blocks will also be garbage collected if there are no successful calls to Put Block From URL or Put Block List on the same blob within a week following the last successful Put Block From URL operation. Se put Blob for chamado na bolha, quaisquer blocos não comprometidos serão recolhidos lixo.If Put Blob is called on the blob, any uncommitted blocks will be garbage collected.

Se a bolha tiver um contrato de arrendamento ativo, o cliente deve especificar um ID de locação válido no pedido para escrever um bloco para a bolha.If the blob has an active lease, the client must specify a valid lease ID on the request in order to write a block to the blob. Se o cliente não especificar um ID de locação, ou especificar um ID de locação inválido, o código de estado do serviço Blob devolve o código de estado 412 (Pré-condição Falhou).If the client does not specify a lease ID, or specifies an invalid lease ID, the Blob service returns status code 412 (Precondition Failed). Se o cliente especificar um ID de locação, mas a bolha não tiver um contrato de arrendamento ativo, o serviço Blob também devolve o código de estado 412 (Pré-condição Falhada).If the client specifies a lease ID but the blob does not have an active lease, the Blob service also returns status code 412 (Precondition Failed).

Para uma dada bolha, todas as identificações de bloco devem ter o mesmo comprimento.For a given blob, all block IDs must be the same length. Se um bloco for carregado com uma identificação de bloco de comprimento diferente dos IDs de bloco para quaisquer blocos existentes não comprometidos, o código de resposta ao erro devolve o código de resposta ao erro 400 (Pedido Mau).If a block is uploaded with a block ID of a different length than the block IDs for any existing uncommitted blocks, the service returns error response code 400 (Bad Request).

A Put Block From URL chamada não atualiza o último tempo modificado de uma bolha existente.Calling Put Block From URL does not update the last modified time of an existing blob.

Chamar Put Block From URL uma página blob devolve um erro.Calling Put Block From URL on a page blob returns an error.

Chamar Put Block From URL uma bolha arquivada devolverá Hot / Cool um erro e em blob não altera o nível de bolha.Calling Put Block From URL on an archived blob will return an error and on Hot/Cool blob does not change the blob tier.

Veja tambémSee Also