Put Block From URLPut Block From URL

La Put Block From URL operación crea un nuevo bloque que se confirmará como parte de un BLOB en el que se lee el contenido de una dirección 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á disponible a partir de la versión 2018-03-28 .This API is available starting in version 2018-03-28.

SolicitudRequest

La solicitud Put Block From URL se puede construir como sigue.The Put Block From URL request may be constructed as follows. Se recomienda HTTPS.HTTPS is recommended. Reemplace mi cuenta por el nombre de la cuenta de almacenamiento:Replace myaccount with the name of your storage account:

URI de solicitud del método PUTPUT Method Request URI Versión HTTPHTTP Version
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=block&blockid=id HTTP/1.1HTTP/1.1

URI de servicio de almacenamiento emuladoEmulated Storage Service URI

Al realizar una solicitud en el servicio de almacenamiento emulado, especifique el nombre de host del emulador y el puerto del servicio Blob como 127.0.0.1:10000, seguido del nombre de la cuenta de almacenamiento 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:

URI de solicitud del método PUTPUT Method Request URI Versión HTTPHTTP Version
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=block&blockid=id HTTP/1.1HTTP/1.1

Para obtener más información, vea uso del emulador de Azure Storage para desarrollo y pruebas.For more information, see Using the Azure Storage Emulator for Development and Testing.

Parámetros de identificador URIURI Parameters

ParámetroParameter DescripciónDescription
blockid Obligatorio.Required. Valor de cadena de tipo Base64 válido que identifica el bloque.A valid Base64 string value that identifies the block. Para que se realice la codificación, el tamaño de la cadena debe ser menor o igual que 64 bytes.Prior to encoding, the string must be less than or equal to 64 bytes in size.

Para un blob determinado, la longitud del valor especificado para el parámetro blockid debe ser igual para cada bloque.For a given blob, the length of the value specified for the blockid parameter must be the same size for each block.

Tenga en cuenta que la cadena de tipo Base64 debe estar codificada para URL.Note that the Base64 string must be URL-encoded.
timeout Opcional.Optional. El parámetro timeout se expresa en segundos.The timeout parameter is expressed in seconds. Para obtener más información, consulte configuración de tiempos de espera para las operaciones de BLOB Service.For more information, see Setting Timeouts for Blob Service Operations.

Encabezados de solicitudRequest Headers

En la tabla siguiente se describen los encabezados de solicitud requeridos y opcionales.The following table describes required and optional request headers.

Encabezado de solicitudRequest Header DescripciónDescription
Authorization Obligatorio.Required. Especifica el esquema de autorización, el nombre de cuenta y la firma.Specifies the authorization scheme, account name, and signature. Consulte autorización de solicitudes para Azure Storage para obtener más información.See Authorize requests to Azure Storage for more information.
Date o x-ms-dateDate or x-ms-date Obligatorio.Required. Especifica la hora universal coordinada (UTC) de la solicitud.Specifies the Coordinated Universal Time (UTC) for the request. Para obtener más información, consulte autorización de solicitudes para Azure Storage.For more information, see Authorize requests to Azure Storage.
x-ms-version Obligatorio para todas las solicitudes autorizadas.Required for all authorized requests. Especifica la versión de la operación que se utiliza para esta solicitud.Specifies the version of the operation to use for this request. Para obtener más información, vea control de versiones de los servicios de Azure Storage.For more information, see Versioning for the Azure Storage Services. Para el bloque put de la dirección URL, la versión debe ser 2018-03-28 o posterior.For Put Block From URL, the version has to be 2018-03-28 or newer.
Content-Length Obligatorio.Required. Especifica el número de bytes que se transmiten en el cuerpo de la solicitud.Specifies the number of bytes being transmitted in the request body. El valor de este encabezado debe establecerse en cero.The value of this header must be set to zero. Cuando la longitud no sea cero, se producirá un error en la operación con el código de estado 400 (solicitud incorrecta).When the length is not zero, the operation will fail with the status code 400 (Bad Request).
x-ms-copy-source:name Obligatorio.Required. Especifica la dirección URL del BLOB de origen.Specifies the URL of the source blob. El valor puede ser una dirección URL de hasta 2 KiB de longitud que especifica un BLOB.The value may be a URL of up to 2 KiB in length that specifies a blob. El valor debe estar codificado para URL tal y como aparecería en un URI de solicitud.The value should be URL-encoded as it would appear in a request URI. El BLOB de origen debe ser público o debe estar autorizado a través de una firma de acceso compartido.The source blob must either be public or must be authorized via a shared access signature. Si el BLOB de origen es público, no se requiere autorización para realizar la operación.If the source blob is public, no authorization is required to perform the operation. Estos son algunos ejemplos de direcciones URL de objetos de origen: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>
- https://myaccount.blob.core.windows.net/mycontainer/myblob?versionid=<DateTime>
x-ms-source-range Opcional.Optional. Carga solo los bytes del BLOB en la dirección URL de origen en el intervalo especificado.Uploads only the bytes of the blob in the source URL in the specified range. Si no se especifica, todo el contenido del BLOB de origen se carga como un solo bloque.If this is not specified, the entire source blob contents are uploaded as a single block. Vea especificar el encabezado de intervalo para las operaciones del servicio BLOB para obtener más información.See Specifying the Range Header for Blob Service Operations for more information.
x-ms-source-content-md5 Opcional.Optional. Un hash MD5 del contenido de bloque del URI.An MD5 hash of the block content from the URI. Este hash se utiliza para comprobar la integridad del bloque durante el transporte de los datos desde el URI.This hash is used to verify the integrity of the block during transport of the data from the URI. Cuando se especifica este encabezado, el servicio de almacenamiento compara el hash del contenido que ha llegado desde el origen de copia con este valor de encabezado.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.

Tenga en cuenta que este hash MD5 no se almacena con el BLOB.Note that this md5 hash is not stored with the blob.

Si ambos valores de hash no coinciden, la operación producirá un error con el código de estado 400 (Solicitud incorrecta).If the two hashes do not match, the operation will fail with error code 400 (Bad Request).
x-ms-source-content-crc64 Opcional.Optional. Un hash CRC64 del contenido de bloque del URI.A CRC64 hash of the block content from the URI. Este hash se utiliza para comprobar la integridad del bloque durante el transporte de los datos desde el URI.This hash is used to verify the integrity of the block during transport of the data from the URI. Cuando se especifica este encabezado, el servicio de almacenamiento compara el hash del contenido que ha llegado desde el origen de copia con este valor de encabezado.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.

Tenga en cuenta que este hash de CRC64 no se almacena con el BLOB.Note that this CRC64 hash is not stored with the blob.

Si ambos valores de hash no coinciden, la operación producirá un error con el código de estado 400 (Solicitud incorrecta).If the two hashes do not match, the operation will fail with error code 400 (Bad Request).

Si x-ms-source-content-md5 x-ms-source-content-crc64 los encabezados y están presentes, la solicitud generará un error 400 (solicitud incorrecta).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 encabezado es compatible con las versiones 2019-02-02 o posteriores.This header is supported in versions 2019-02-02 or later.
x-ms-encryption-scope Opcional.Optional. Indica el ámbito de cifrado que se va a utilizar para cifrar el contenido de origen.Indicates the encryption scope to use to encrypt the source contents. Este encabezado es compatible con las versiones 2019-02-02 o posteriores.This header is supported in versions 2019-02-02 or later.
x-ms-lease-id:<ID> Obligatorio si el blob tiene una concesión activa.Required if the blob has an active lease. Para realizar esta operación en un blob con una concesión activa, especifique el identificador de concesión válido de este encabezado.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. Proporciona un valor opaco generado por el cliente con un límite de 1 KiB de caracteres que se registra en los registros de análisis cuando el registro de análisis de almacenamiento está habilitado.Provides a client-generated, opaque value with a 1 KiB character limit that is recorded in the analytics logs when storage analytics logging is enabled. Se recomienda encarecidamente usar este encabezado para correlacionar las actividades del lado cliente con las solicitudes recibidas por el servidor.Using this header is highly recommended for correlating client-side activities with requests received by the server. Para obtener más información, consulte acerca del registro de Storage Analytics y el registro de Azure: uso de registros para realizar un seguimiento de las solicitudes de almacenamiento.For more information, see About Storage Analytics Logging and Azure Logging: Using Logs to Track Storage Requests.

Encabezados de solicitud (claves de cifrado proporcionadas por el cliente)Request Headers (Customer-provided encryption keys)

A partir de la versión 2019-02-02, se pueden especificar los siguientes encabezados en la solicitud para cifrar un BLOB con una clave proporcionada por el 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. El cifrado con una clave proporcionada por el cliente (y el conjunto de encabezados correspondiente) es opcional.Encryption with a customer-provided key (and the corresponding set of headers) is optional.

Encabezado de solicitudRequest header DescripciónDescription
x-ms-encryption-key Obligatorio.Required. La clave de cifrado AES-256 codificada en Base64.The Base64-encoded AES-256 encryption key.
x-ms-encryption-key-sha256 Obligatorio.Required. El hash SHA256 con codificación Base64 de la clave de cifrado.The Base64-encoded SHA256 hash of the encryption key.
x-ms-encryption-algorithm: AES256 Obligatorio.Required. Especifica el algoritmo que se va a usar para el cifrado.Specifies the algorithm to use for encryption. El valor de este encabezado debe ser AES256.The value of this header must be AES256.

Cuerpo de la solicitudRequest Body

No hay cuerpo de la solicitud.No request body.

Solicitud de ejemploSample 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

ResponseResponse

La respuesta incluye un código de estado HTTP y un conjunto de encabezados de respuesta.The response includes an HTTP status code and a set of response headers.

Código de estadoStatus Code

Una operación correcta devuelve el código de estado 201 (Creado).A successful operation returns status code 201 (Created).

Para obtener información sobre los códigos de estado, vea códigos de estado y de error.For information about status codes, see Status and Error Codes.

Encabezados de respuestaResponse Headers

La respuesta para esta operación incluye los encabezados siguientes.The response for this operation includes the following headers. La respuesta también puede incluir otros encabezados HTTP estándar.The response may also include additional standard HTTP headers. Todos los encabezados estándar cumplen la especificación del protocolo HTTP/1.1.All standard headers conform to the HTTP/1.1 protocol specification.

Encabezado de respuestaResponse header DescripciónDescription
Content-MD5 Este encabezado se devuelve para que el cliente pueda comprobar la integridad del contenido del mensaje.This header is returned so that the client can check for message content integrity. El valor de este encabezado lo calcula el servicio Blob; no es necesariamente el mismo valor que el especificado en los encabezados de solicitud.The value of this header is computed by the Blob service; it is not necessarily the same value specified in the request headers. En las versiones 2019-02-02 o posteriores, este encabezado solo se devuelve cuando la solicitud tiene este encabezado.For versions 2019-02-02 or later, This header is only returned when the request has this header.
x-ms-content-crc64 En las versiones 2019-02-02 o posteriores, este encabezado se devuelve para que el cliente pueda comprobar la integridad del contenido del mensaje.For versions 2019-02-02 or later, This header is returned so that the client can check for message content integrity. El valor de este encabezado lo calcula el servicio Blob; no es necesariamente el mismo valor que el especificado en los encabezados de solicitud.The value of this header is computed by the Blob service; it is not necessarily the same value specified in the request headers.

Este encabezado se devuelve cuando x-ms-source-content-md5 el encabezado no está presente en la solicitud.This header is returned when x-ms-source-content-md5 header is not present in the request.
x-ms-request-id Este encabezado identifica de forma única la solicitud que se realizó y se puede utilizar para solucionar problemas relacionados con esta.This header uniquely identifies the request that was made and can be used for troubleshooting the request. Para obtener más información, consulte solución de problemas de las operaciones de API.For more information, see Troubleshooting API Operations.
x-ms-version Indica la versión del servicio Blob utilizado para ejecutar la solicitud.Indicates the version of the Blob service used to execute the request.
Date Valor de fecha y hora UTC generado por el servicio que indica la hora a la que se inició la respuesta.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 Versión 2015-12-11 o posterior.Version 2015-12-11 or newer. El valor de este encabezado se establece en true si el contenido del bloque se cifra correctamente mediante el algoritmo especificado; de false lo contrario,.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 Versión 2019-02-02 o posterior.Version 2019-02-02 or newer. Se devuelve este encabezado si la solicitud usó una clave proporcionada por el cliente para el cifrado, de modo que el cliente pueda asegurarse de que el contenido de la solicitud se cifre correctamente con la clave proporcionada.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-encryption-scope Versión 2019-02-02 o posterior.Version 2019-02-02 or newer. Este encabezado se devuelve si la solicitud usaba un ámbito de cifrado, por lo que el cliente puede asegurarse de que el contenido de la solicitud se cifre correctamente mediante el ámbito de cifrado.This header is returned if the request used an encryption scope, so the client can ensure the contents of the request are successfully encrypted using the encryption scope.
x-ms-client-request-id Este encabezado se puede usar para solucionar problemas de las solicitudes y las respuestas correspondientes.This header can be used to troubleshoot requests and corresponding responses. El valor de este encabezado es igual al valor del x-ms-client-request-id encabezado si está presente en la solicitud y el valor tiene como máximo 1024 caracteres ASCII visibles.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. Si el x-ms-client-request-id encabezado no está presente en la solicitud, este encabezado no estará presente en la respuesta.If the x-ms-client-request-id header is not present in the request, this header will not be present in the response.

Respuesta de ejemploSample 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  

AuthorizationAuthorization

La llamada a esta operación la puede realizar el propietario de la cuenta y cualquiera que disponga de una firma de acceso compartido con permiso para escribir en el blob o en su contenedor.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.

ComentariosRemarks

Put Block From URL carga un bloque para su futura inclusión en un blob en bloques.Put Block From URL uploads a block for future inclusion in a block blob. Un BLOB en bloques puede incluir un máximo de 50.000 bloques.A block blob can include a maximum of 50,000 blocks. Cada bloque puede tener un tamaño diferente.Each block can be a different size. El tamaño máximo de un bloque cargado con Put Block From URL es 100 MIB.The maximum size for a block uploaded with Put Block From URL is 100 MiB. Para cargar bloques más grandes (hasta 4000 MiB), consulte Put Block.To upload larger blocks (up to 4000 MiB), see Put Block.

Un BLOB puede tener un máximo de 100.000 bloques sin confirmar en un momento dado.A blob can have a maximum of 100,000 uncommitted blocks at any given time. Si se supera este máximo, el servicio devuelve el código de estado 409 (RequestEntityTooLargeBlockCountExceedsLimit).If this maximum is exceeded, the service returns status code 409 (RequestEntityTooLargeBlockCountExceedsLimit).

En la tabla siguiente se describen los tamaños máximos de bloque y blob que permite la versión del servicio.The following table describes the maximum block and blob sizes permitted by service version.

Versión del servicioService version Tamaño máximo de bloque (Via Put Block from URL)Maximum block size (via Put Block from URL) Tamaño máximo de blob (a través de Put Block List)Maximum blob size (via Put Block List) Tamaño máximo de blobs a través de una operación de escritura única (a través de put BLOB from URL)Maximum blob size via single write operation (via Put Blob from URL)
Versión 2020-04-08 y versiones posterioresVersion 2020-04-08 and later MiB 40004000 MiB Aproximadamente 190,7 TiB (4000 MiB X 50.000 bloques)Approximately 190.7 TiB (4000 MiB X 50,000 blocks) 5000 MiB (versión preliminar)5000 MiB (preview)
Versiones anteriores a 2020-04-08Versions prior to 2020-04-08 100 MiB100 MiB Aproximadamente 4,75 TiB (100 MiB x 50 000 bloques)Approximately 4.75 TiB (100 MiB X 50,000 blocks) 256 MiB256 MiB

Después de cargar un conjunto de bloques, puede crear o actualizar el BLOB en el servidor desde este conjunto mediante una llamada a la operación Put Block List .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 bloque del conjunto se identifica mediante un identificador de bloque que es único dentro del blob.Each block in the set is identified by a block ID that is unique within that blob. El ámbito de los identificadores de bloque es el blob, de modo que diferentes blobs pueden tener bloques con el mismo identificador.Block IDs are scoped to a particular blob, so different blobs can have blocks with same IDs.

Si llama a Put Block From URL en un blob que aún no existe, se creará un nuevo blob en bloques cuyo contenido tendrá una longitud 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. Este blob lo enumera la operación List Blobs si se especifica la opción include=uncommittedblobs.This blob is enumerated by the List Blobs operation if the include=uncommittedblobs option is specified. El bloque o los bloques cargados no se confirman hasta que se llama a Put Block List en el nuevo blob.The block or blocks that you uploaded are not committed until you call Put Block List on the new blob. Un blob creado de esta manera se mantiene en el servidor durante una semana; si no se han agregado ni confirmado bloques en el blob durante ese período de tiempo, el blob será objeto de la recolección de elementos no utilizados.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.

Un bloque que se ha cargado correctamente con la operación Put Block From URL no se convierte en parte de un blob hasta que se confirma con Put Block List.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 de que se llame a para confirmar el BLOB nuevo o actualizado, las llamadas a Get BLOB devuelven el contenido del BLOB sin incluir el bloque no confirmado.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.

Si se carga un bloque con el mismo identificador de bloque que otro bloque aún sin confirmar, el último bloque cargado con ese identificador se confirmará en la próxima operación Put Block List correcta.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.

Después de llamar a Put Block List, todos los bloques sin confirmar especificados en la lista de bloques se confirman como parte del nuevo blob.After Put Block List is called, all uncommitted blocks specified in the block list are committed as part of the new blob. Los bloques sin confirmar que no se hayan especificado en la lista de bloques del blob serán objeto de la recolección de elementos no utilizados y se quitarán de Blob service.Any uncommitted blocks that were not specified in the block list for the blob will be garbage collected and removed from the Blob service. Cualquier bloque sin confirmar también será objeto de la recolección de elementos no utilizados si no hay llamadas correctas a Put Block From URL o a Put Block List en el mismo blob durante una semana desde la última operación Put Block From URL correcta.Any 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. Si se llama a Put BLOB en el BLOB, cualquier bloque sin confirmar se recolectará como elemento no utilizado.If Put Blob is called on the blob, any uncommitted blocks will be garbage collected.

Si el blob tiene una concesión activa, el cliente debe especificar un identificador de concesión válido en la solicitud para poder escribir un bloque en el blob.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. Si el cliente no especifica un identificador de concesión o especifica un identificador de concesión no válido, Blob service devuelve el código de estado 412 (Error de condición previa).If the client does not specify a lease ID, or specifies an invalid lease ID, the Blob service returns status code 412 (Precondition Failed). Si el cliente especifica un identificador de concesión, pero el blob no dispone de una concesión activa, el servicio Blob también devuelve el código de estado 412 (Error de condición previa).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).

En un blob determinado, todos los identificadores de bloque deben tener la misma longitud.For a given blob, all block IDs must be the same length. Si se carga un bloque con un identificador de grupo de distinta longitud que los identificadores de bloque de los bloques sin confirmar existentes, el servicio devuelve el código de respuesta de error 400 (Solicitud incorrecta).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).

Una llamada a Put Block From URL no actualiza la última hora de modificación de los blobs existentes.Calling Put Block From URL does not update the last modified time of an existing blob.

Una llamada a Put Block From URL en un blob en páginas devuelve un error.Calling Put Block From URL on a page blob returns an error.

La llamada a Put Block From URL en un BLOB archivado devolverá un error y, en Hot / Cool BLOB, no cambia el nivel de BLOB.Calling Put Block From URL on an archived blob will return an error and on Hot/Cool blob does not change the blob tier.

Consulte tambiénSee Also