Colocar página de la dirección URLPut Page From URL

La Put Page From URL operación escribe un intervalo de páginas en un BLOB en páginas en el que se lee el contenido de una dirección URL.The Put Page From URL operation writes a range of pages to a page blob where the contents are read from a URL. Esta API está disponible a partir de la versión 2018-11-09.This API is available starting in version 2018-11-09.

SolicitudRequest

La solicitud Put Page From URL se puede construir como sigue.The Put Page 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=page 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=page 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

Se pueden especificar los parámetros adicionales siguientes en el URI de solicitud.The following additional parameters may be specified on the request URI.

ParámetroParameter DescripciónDescription
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 Necesario.Required. Especifica el esquema de autorización, el nombre de cuenta y la firma.Specifies the authorization scheme, account name, and signature. Para obtener más información, consulte autorización de solicitudes para Azure Storage.For more information, see Authorize requests to Azure Storage.
Date o x-ms-dateDate or x-ms-date Necesario.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.
Range Es obligatorio especificar Range o x-ms-range.Either Range or x-ms-range is required.

Especifica el intervalo de bytes que se van a escribir como una página.Specifies the range of bytes to be written as a page. Es necesario especificar tanto el inicio como el final del intervalo.Both the start and end of the range must be specified. Este encabezado se define mediante la especificación del protocolo HTTP/1.1.This header is defined by the HTTP/1.1 protocol specification.

En el caso de una operación de actualización de páginas, el intervalo de páginas puede tener un tamaño máximo de 4 MiB.For a page update operation, the page range can be up to 4 MiB in size.

Dado que las páginas deben alinearse con límites de 512 bytes, el desplazamiento inicial debe ser un módulo de 512 y el desplazamiento final debe ser un módulo de 512 – 1.Given that pages must be aligned with 512-byte boundaries, the start offset must be a modulus of 512 and the end offset must be a modulus of 512 – 1. Ejemplos de intervalos de bytes válidos son 0-511, 512-1023, etc.Examples of valid byte ranges are 0-511, 512-1023, etc.

El servicio Blob solo acepta un único intervalo de bytes para el encabezado Range, y el intervalo de bytes debe especificarse en el formato siguiente: bytes=startByte-endByte.The Blob service accepts only a single byte range for the Range header, and the byte range must be specified in the following format: bytes=startByte-endByte.

Si se especifican Range y x-ms-range, el servicio utiliza el valor de x-ms-range.If both Range and x-ms-range are specified, the service uses the value of x-ms-range. 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-range Es obligatorio especificar Range o x-ms-range.Either Range or x-ms-range is required.

Especifica el intervalo de bytes que se van a escribir como una página.Specifies the range of bytes to be written as a page. Es necesario especificar tanto el inicio como el final del intervalo.Both the start and end of the range must be specified. Este encabezado se define mediante la especificación del protocolo HTTP/1.1.This header is defined by the HTTP/1.1 protocol specification.

El intervalo de páginas puede tener un tamaño máximo de 4 MiB.The page range can be up to 4 MiB in size.

Dado que las páginas deben alinearse con límites de 512 bytes, el desplazamiento inicial debe ser un módulo de 512 y el desplazamiento final debe ser un módulo de 512 – 1.Given that pages must be aligned with 512-byte boundaries, the start offset must be a modulus of 512 and the end offset must be a modulus of 512 – 1. Ejemplos de intervalos de bytes válidos son 0-511, 512-1023, etc.Examples of valid byte ranges are 0-511, 512-1023, etc.

El servicio Blob solo acepta un único intervalo de bytes para el encabezado x-ms-range, y el intervalo de bytes debe especificarse en el formato siguiente: bytes=startByte-endByte.The Blob service accepts only a single byte range for the x-ms-range header, and the byte range must be specified in the following format: bytes=startByte-endByte.

Si se especifican Range y x-ms-range, el servicio utiliza el valor de x-ms-range.If both Range and x-ms-range are specified, the service uses the value of x-ms-range. 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.
Content-Length Necesario.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 Necesario.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 Carga los bytes del BLOB en la dirección URL de origen en el intervalo especificado.Uploads the bytes of the blob in the source URL in the specified range. Es necesario especificar tanto el inicio como el final del intervalo.Both the start and end of the range must be specified. Este encabezado se define mediante la especificación del protocolo HTTP/1.1.This header is defined by the HTTP/1.1 protocol specification.

El intervalo de páginas puede tener un tamaño máximo de 4 MiB.The page range can be up to 4 MiB in size.

El servicio Blob solo acepta un único intervalo de bytes para el encabezado x-ms-source-range, y el intervalo de bytes debe especificarse en el formato siguiente: bytes=startByte-endByte.The Blob service accepts only a single byte range for the x-ms-source-range header, and the byte range must be specified in the following format: bytes=startByte-endByte.

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 la página del URI.An MD5 hash of the page content from the URI. Este hash se utiliza para comprobar la integridad de la página durante el transporte de los datos desde el URI.This hash is used to verify the integrity of the page 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 la página del URI.A CRC64 hash of the page content from the URI. Este hash se utiliza para comprobar la integridad de la página durante el transporte de los datos desde el URI.This hash is used to verify the integrity of the page 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-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-if-sequence-number-le: <num> Opcional.Optional. Si el número de secuencia del blob es menor o igual que el valor especificado, la solicitud continúa; en caso contrario, produce el error SequenceNumberConditionNotMet (código de estado HTTP 412 – Error de condición previa).If the blob’s sequence number is less than or equal to the specified value, the request proceeds; otherwise it fails with the SequenceNumberConditionNotMet error (HTTP status code 412 – Precondition Failed).
x-ms-if-sequence-number-lt: <num> Opcional.Optional. Si el número de secuencia del blob es menor que el valor especificado, la solicitud continúa; en caso contrario, produce el error SequenceNumberConditionNotMet (código de estado HTTP 412 – Error de condición previa).If the blob’s sequence number is less than the specified value, the request proceeds; otherwise it fails with SequenceNumberConditionNotMet error (HTTP status code 412 – Precondition Failed).
x-ms-if-sequence-number-eq: <num> Opcional.Optional. Si el número de secuencia del blob es igual que el valor especificado, la solicitud continúa; en caso contrario, produce el error SequenceNumberConditionNotMet (código de estado HTTP 412 – Error de condición previa).If the blob’s sequence number is equal to the specified value, the request proceeds; otherwise it fails with SequenceNumberConditionNotMet error (HTTP status code 412 – Precondition Failed).
If-Modified-Since Opcional.Optional. Valor DateTime.A DateTime value. Especifique este encabezado condicional para escribir la página solo si el blob se ha modificado desde la fecha u hora especificada.Specify this conditional header to write the page only if the blob has been modified since the specified date/time. Si el blob no se ha modificado, Blob service devuelve el código de estado 412 (Error de condición previa).If the blob has not been modified, the Blob service returns status code 412 (Precondition Failed).
If-Unmodified-Since Opcional.Optional. Valor DateTime.A DateTime value. Especifique este encabezado condicional para escribir la página solo si el blob no se ha modificado desde la fecha u hora especificada.Specify this conditional header to write the page only if the blob has not been modified since the specified date/time. Si el blob se ha modificado, Blob service devuelve el código de estado 412 (Error de condición previa).If the blob has been modified, the Blob service returns status code 412 (Precondition Failed).
If-Match Opcional.Optional. Valor ETag.An ETag value. Especifique un valor ETag para este encabezado condicional para escribir la página solo si el valor ETag del blob coincide con el valor especificado.Specify an ETag value for this conditional header to write the page only if the blob's ETag value matches the value specified. Si los valores no coinciden, el servicio Blob devuelve el código de estado 412 (Error de condición previa).If the values do not match, the Blob service returns status code 412 (Precondition Failed).
If-None-Match Opcional.Optional. Valor ETag.An ETag value.

Especifique un valor ETag para este encabezado condicional para escribir la página solo si el valor ETag del blob no coincide con el valor especificado.Specify an ETag value for this conditional header to write the page only if the blob's ETag value does not match the value specified. Si los valores son idénticos, Blob service devuelve el código de estado 412 (Error de condición previa).If the values are identical, the Blob service returns status code 412 (Precondition Failed).
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-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.

Esta operación también admite el uso de encabezados condicionales que permiten ejecutar la operación solo si se cumple una condición especificada.This operation also supports the use of conditional headers to execute the operation only if a specified condition is met. Para obtener más información, consulte Especificación de encabezados condicionales para las operaciones de Blob Service.For more information, see Specifying Conditional Headers for Blob Service Operations.

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 cifrado 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 encrypted 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 Necesario.Required. La clave de cifrado AES-256 codificada en Base64.The Base64-encoded AES-256 encryption key.
x-ms-encryption-key-sha256 Necesario.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 Necesario.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

El cuerpo de la solicitud incluye el contenido de la página.The request body contains the content of the page.

Solicitud de ejemploSample Request

  
Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=page HTTP/1.1  
  
Request Headers:   
x-ms-date: Fri, 16 Sep 2011 22:15:50 GMT  
x-ms-version: 2018-11-09  
x-ms-range: bytes=0-65535  
x-ms-copy-source: https://myaccount.blob.core.windows.net/mycontainer/myblob
x-ms-source-range: bytes=0-65535
Authorization: SharedKey myaccount:4KdWDiTdA9HmIF9+WF/8WfYOpUrFhieGIT7f0av+GEI=  
Content-Length: 0  
  

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.

SintaxisSyntax DescripciónDescription
ETag La ETag del blob.The ETag for the blob. Si la versión de la solicitud es 2011-08-18 o una más reciente, el valor ETag estará entre comillas.If the request version is 2011-08-18 or newer, the ETag value will be in quotes. La ETag se puede utilizar para realizar una operación Put Page From URL condicional especificando su valor para el encabezado de solicitud If-Match o If-None-Match.The ETag can be used to perform a conditional Put Page From URL operation by specifying its value for the If-Match or If-None-Match request header.
Last-Modified Fecha y la hora en que se modificó por última vez el blob.The date and time that the blob was last modified. El formato de la fecha sigue las convenciones de RFC 1123.The date format follows RFC 1123. Para obtener más información, vea representación de valores de fecha y hora en encabezados.For more information, see Representation of Date-Time Values in Headers.

Cualquier operación de escritura realizada en el blob, incluidas las actualizaciones de los metadatos o las propiedades del blob, cambia la hora de la última modificación del blob.Any write operation on the blob, including updates to the blob’s metadata or properties, changes the last modified time of the blob.
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-blob-sequence-number El número de secuencia actual del blob en páginas.The current sequence number for the page blob.
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. Este encabezado se devuelve para las solicitudes realizadas en la versión 2009-09-19 y versiones posteriores.This header is returned for requests made against version 2009-09-19 and later.
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 de la solicitud 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 request 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.

Cuerpo de la respuestaResponse Body

Ninguno.None.

Respuesta de ejemploSample Response

Response Status:  
HTTP/1.1 201 Created  
  
Response Headers:  
Transfer-Encoding: chunked  
x-ms-content-crc64: 77uWZTolTHU  
Date: Sun, 25 Sep 2011 22:33:35 GMT  
ETag: "0x8CB171BA9E94B0B"  
Last-Modified: Sun, 25 Sep 2011 12:13:31 GMT  
x-ms-version: 2011-08-18  
x-ms-blob-sequence-number: 0  
Content-Length: 0  
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

La operación Put Page From URL escribe un intervalo de páginas en un blob en páginas.The Put Page From URL operation writes a range of pages to a page blob. Solo se puede llamar a esta operación en un blob en páginas existente.This operation can only be called on an existing page blob. No se la puede llamar para crear un nuevo blob en páginas, ni en un blob en bloques.It cannot be called to create a new page blob, nor can it be called on a block blob. Si se llama a Put Page From URL con un nombre de blob que no existe actualmente, se devuelve el error BlobNotFound (código de estado HTTP 404 – No encontrado).Calling Put Page From URL with a blob name that does not currently exist returns the BlobNotFound error (HTTP status code 404 – Not Found).

Para crear un nuevo BLOB en páginas, llame a Put BLOB y especifique el tipo de BLOB que se va a crear como un BLOB en páginas.To create a new page blob, call Put Blob and specify the type of blob to create as a page blob. Un BLOB en páginas puede tener un tamaño máximo de 8 TiB.A page blob may be up to 8 TiB in size.

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 una página.If the blob has an active lease, the client must specify a valid lease ID on the request in order to write a page.

Operaciones de actualización de páginasPage Update Operations

La llamada a Put Page From URL realiza una escritura en contexto en el BLOB en páginas especificado.Calling Put Page From URL performs an in-place write on the specified page blob. El contenido de la página especificada se sobrescribe con la actualización.Any content in the specified page is overwritten with the update.

Importante

Si se agota el tiempo de espera del servidor o se cierra la conexión durante una operación Put Page From URL, es posible que la página no se haya actualizado.If the server times out or your connection is closed during a Put Page From URL, the page may or may not have been updated. Por lo tanto, debe continuar reintentando la actualización hasta que reciba una respuesta que indique que se ha realizado correctamente.Therefore, you should continue to retry the update until you receive a response indicating success.

Cada intervalo de páginas enviado con Put Page From URL para una operación de actualización puede tener un tamaño máximo de 4 MIB.Each range of pages submitted with Put Page From URL for an update operation may be up to 4 MiB in size. El intervalo inicial y final de la página deben alinearse con límites de 512 bytes.The start and end range of the page must be aligned with 512-byte boundaries. Si intenta cargar un intervalo de páginas mayor de 4 MB, el servicio devuelve el código de estado 413 (Entidad solicitada demasiado grande).If you attempt to upload a range of pages that is larger than 4MB, the service returns status code 413 (Request Entity Too Large).

Administrar problemas de simultaneidadManaging Concurrency Issues

El servicio Blob administra las operaciones de escritura simultáneas en páginas superpuestas de forma secuencial: la última página procesada por el servicio determina el contenido del blob.The Blob service handles concurrent writes to overlapping pages sequentially: the last page processed by the service determines the blob's content. Por lo tanto, para garantizar la integridad del contenido del blob, el cliente debe controlar las operaciones de escritura en páginas superpuestas utilizando uno o varios de los métodos siguientes:Therefore, to ensure the integrity of the blob's content, the client should handle writes to overlapping pages using one or more of the following approaches:

  • Puede comprobar el valor del encabezado de respuesta Last-Modified para cada llamada correcta a Put Page From URL.You can check the value of the Last-Modified response header for each successful call to Put Page From URL. El orden de las respuestas devueltas de Blob service no tiene por qué corresponder necesariamente al orden en que las ejecutó el servicio.The order of responses returned from the Blob service does not necessarily correspond to the order in which they were executed by the service. Pero el valor de Last-Modified siempre indica el orden en que el servicio procesó las solicitudes.But the value of Last-Modified always indicates the order in which the service processed the requests.

  • Puede realizar actualizaciones condicionales en función de la ETag del blob o de la hora de última modificación utilizando simultaneidad optimista.You can perform updates conditionally based on the blob's ETag or last modified time using optimistic concurrency. Este método funciona bien si el número de operaciones de escritura simultáneas es relativamente bajo.This approach works well if the number of concurrent writes is relatively low. Utilice los encabezados de solicitud condicionales If-Match, If-None-Match, If-Modified-Since y If-Unmodified-Since con este fin.Use the conditional request headers If-Match, If-None-Match, If-Modified-Since, and If-Unmodified-Since for this purpose.

  • Puede llamar a la concesión de blobs para bloquear el BLOB en otras escrituras durante un período de un minuto, o más si se renueva la concesión.You can call Lease Blob to lock the blob against other writes for a one-minute period, or longer if the lease is renewed.

  • Puede utilizar el número de secuencia del blob para garantizar que si se reintenta una solicitud para la que no hubo respuesta no se producirán actualizaciones simultáneas.You can use the blob's sequence number to ensure that retrying a request for which there was no response does not result in concurrent updates. Este método puede ser más apropiado para los clientes que requieran un alto rendimiento en las operaciones de escritura en páginas.This approach may be best for clients requiring high throughput for page writes. Se describe en detalle en la sección siguiente.It is described in detail in the following section.

Utilizar el número de secuencia del blob en páginas para reintentar solicitudesUsing the Page Blob Sequence Number to Retry Requests

Cuando una llamada a Put Page From URL agota el tiempo de espera o no devuelve una respuesta, no hay ninguna manera de saber con certeza si la solicitud se realizó correctamente.When a call to Put Page From URL times out or does not return a response, there is no way to know for certain whether the request succeeded. Por lo tanto, es necesario reintentar la solicitud, pero debido a la naturaleza distribuida de los servicios de almacenamiento de Azure, es posible que la solicitud original se procese después de que la solicitud reintentada se haya realizado correctamente.You therefore need to retry the request, but due to the distributed nature of the Azure storage services, it is possible that the original request may be processed after the retried request has succeeded. La solicitud original demorada puede sobrescribir otras actualizaciones y producir un resultado inesperado.The delayed original request can overwrite other updates and yield an unexpected result. La secuencia siguiente muestra cómo puede ocurrir esto:The following sequence illustrates how this may happen:

  1. Una solicitud Put Page From URL para escribir el valor “X” en la página 0 agota el tiempo de espera o no devuelve una respuesta.A Put Page From URL request to write value "X" to page 0 times out or does not return a response.

  2. Una solicitud reintentada para escribir el valor “X” en la página 0 se realiza correctamente.A retried request to write value "X" to page 0 succeeds.

  3. Una solicitud para escribir el valor “Y” en la página 0 se realiza correctamente.A request to write value "Y" to page 0 succeeds.

  4. La solicitud original se realiza correctamente, escribiendo el valor “X” en la página 0.The original request succeeds, writing value "X" to page 0.

  5. La lectura de la página 0 devuelve el valor “X”, cuando el cliente en este momento esperaba el valor “Y”.Reading page 0 returns value "X", when the client was at this point expecting value "Y".

Este tipo de conflicto puede ocurrir cuando la solicitud original no devuelve un código de estado comprendido entre 100 y 499, o 503 (Servidor ocupado).This kind of conflict can occur when the original request does not return a status code between 100-499, or 503 (Server Busy). Si se devuelve uno de estos códigos de estado, podrá saber con certeza si la solicitud se ha realizado correctamente o ha producido un error.If one of these status codes is returned, you can be certain as to whether the request has succeeded or failed. Pero si el servicio devuelve un código de estado fuera de este intervalo, no hay ninguna manera de saber el estado de la solicitud original.But if the service returns a status code outside this range, there's no way to know the status of the original request.

Para evitar este tipo de conflicto, puede utilizar el número de secuencia del blob en páginas para asegurarse de que, al reintentar una solicitud, la solicitud original no se realizará correctamente posteriormente.To prevent this sort of conflict, you can use the page blob's sequence number to ensure that when you retry a request, the original request will not subsequently succeed. Para ello, deberá aumentar el número de secuencia antes de volver a intentar la solicitud original.To do so, you should increment the sequence number before retrying the original request. A continuación, puede utilizar los encabezados de número de secuencia condicionales para asegurarse de que la solicitud produce un error si su número de secuencia no coincide con el número de secuencia esperado.You can then use the conditional sequence number headers to ensure that the request fails if its sequence number does not match the expected sequence number. La secuencia siguiente muestra este método:The following sequence illustrates this approach:

  1. El cliente crea un BLOB en páginas con el BLOB Put y establece su número de secuencia en 0.The client creates a page blob with Put Blob and sets its sequence number to 0.

  2. Una Put Page From URL solicitud para escribir el valor "X" en la página 0 con el if-sequence-number-lt encabezado establecido en 1 agota el tiempo de espera o no devuelve una respuesta.A Put Page From URL request to write value "X" to page 0 with the if-sequence-number-lt header set to 1 times out or does not return a response.

  3. El cliente llama a Set Blob Properties para actualizar el número de secuencia a 1.The client calls Set Blob Properties to update the sequence number to 1.

  4. Una solicitud reintentada para escribir el valor "X" en la página 0 con if-sequence-number-lt establecido en se 2 realiza correctamente.A retried request to write value "X" to page 0 with if-sequence-number-lt set to 2 succeeds.

  5. Una solicitud para escribir el valor "Y" en la página 0 con if-sequence-number-lt establecido en se 2 realiza correctamente.A request to write value "Y" to page 0 with if-sequence-number-lt set to 2 succeeds.

  6. Finalmente, se procesa la solicitud original, pero se produce un error porque especifica la condición de que el número de secuencia debe ser menor que 1 (es decir, el if-sequence-num-lt encabezado está establecido en 1 ).The original request is finally processed, but it fails because it specifies the condition that the sequence number must be less than 1 (that is, the if-sequence-num-lt header is set to 1). El error es SequenceNumberConditionNotMet (código de estado HTTP 412 – Error de condición previa).The error is SequenceNumberConditionNotMet (HTTP status code 412 – Precondition Failed).

  7. La lectura de la página 0 devuelve el valor esperado de “Y”.Reading page 0 returns the expected value of "Y".

Consulte tambiénSee Also

Autorizar solicitudes para Azure Storage Authorize requests to Azure Storage
Códigos de estado y de error Status and Error Codes
Establecer los tiempos de espera para las operaciones del servicio BlobSetting Timeouts for Blob Service Operations