Put Range

La operación Put Range escribe un intervalo de bytes en un archivo.

Disponibilidad del protocolo

Protocolo de recurso compartido de archivos habilitado Disponible
SMB Sí
NFS No

Solicitud

La solicitud Put Range se puede construir como sigue. Se recomienda usar HTTPS.

Método URI de solicitud Versión de HTTP
PUT https://myaccount.file.core.windows.net/myshare/mydirectorypath/myfile?comp=range HTTP/1.1

Reemplace los componentes de la ruta de acceso que se muestran en el URI de solicitud por los suyos de la siguiente manera:

Componente de ruta de acceso Descripción
myaccount El nombre de la cuenta de almacenamiento.
myshare El nombre del recurso compartido de archivos.
mydirectorypath Opcional. La ruta de acceso al directorio principal.
myfile Nombre del archivo.

Para obtener información sobre las restricciones de nomenclatura de rutas de acceso, vea Recursos compartidos de nombres y referencia, directorios, archivos y metadatos.

Parámetros del identificador URI

Se pueden especificar los parámetros adicionales siguientes en el URI de solicitud.

Parámetro Descripción
timeout Opcional. El parámetro timeout se expresa en segundos. Para obtener más información, consulte Establecimiento de tiempos de espera para las operaciones del servicio de archivos.

Encabezados de solicitud

Los encabezados de solicitud obligatorios y opcionales se describen en la tabla siguiente:

Encabezado de solicitud Descripción
Authorization Necesario. Especifica el esquema de autorización, el nombre de la cuenta y la firma. Para obtener más información, vea Autorización de solicitudes a Azure Storage.
Date o x-ms-date Necesario. Especifica la hora universal coordinada (UTC) de la solicitud. Para obtener más información, vea Autorización de solicitudes a Azure Storage.
x-ms-version Obligatorio para todas las solicitudes autorizadas. Especifica la versión de la operación que se utiliza para esta solicitud. Para obtener más información, vea Versiones de los servicios de Azure Storage.
Range o x-ms-range Es obligatorio especificar Range o x-ms-range.

Especifica el intervalo de bytes que se escribirá. Es necesario especificar tanto el inicio como el final del intervalo. Este encabezado se define mediante la especificación del protocolo HTTP/1.1.

Para una operación de actualización, el intervalo puede tener un tamaño de hasta 4 MiB. En una operación de borrado, el intervalo puede alcanzar un tamaño máximo igual al del archivo.

El servicio File solo acepta un único intervalo de bytes para los Range encabezados y x-ms-range , y el intervalo de bytes debe especificarse en el formato siguiente: bytes=startByte-endByte.

Si se especifican Range y x-ms-range, el servicio utiliza el valor de x-ms-range. Para obtener más información, vea Especificar el encabezado de intervalo para las operaciones del servicio file.
Content-Length Necesario. Especifica el número de bytes que se transmiten en el cuerpo de la solicitud. Cuando el x-ms-write encabezado se establece clearen , el valor de este encabezado debe establecerse 0en .
Content-MD5 Opcional. Hash MD5 del contenido. Este hash se utiliza para comprobar la integridad de los datos durante el transporte. Cuando se especifica el Content-MD5 encabezado, Azure Files compara el hash del contenido que ha llegado con el valor de encabezado que se envió. Si ambos valores de hash no coinciden, la operación produce un error con el código de estado 400 (solicitud incorrecta).

El Content-MD5 encabezado no se permite cuando el x-ms-write encabezado se establece clearen . Si se incluye con la solicitud, el servicio file devuelve el código de estado 400 (solicitud incorrecta).
x-ms-write: { update ¦ clear } Necesario. Debe especificar una de las siguientes opciones:
  • update: escribe los bytes especificados por el cuerpo de la solicitud en el intervalo especificado. Los encabezados Range y Content-Length deben coincidir para realizar la actualización.
  • clear: borra el intervalo especificado y libera el espacio utilizado en el almacenamiento para ese intervalo. Para borrar un intervalo, establezca el Content-Length encabezado 0en y establezca el Range encabezado en un valor que indique el intervalo que se va a borrar, hasta el tamaño máximo de archivo.
x-ms-lease-id: <ID> Obligatorio si el archivo tiene una concesión activa. Disponible para la versión 2019-02-02 y posteriores.
x-ms-client-request-id Opcional. Proporciona un valor opaco generado por el cliente con un límite de caracteres de 1 kibibyte (KiB) que se registra en los registros cuando se configura el registro. Se recomienda encarecidamente usar este encabezado para correlacionar las actividades del lado cliente con las solicitudes que recibe el servidor. Para obtener más información, vea Supervisar Azure Files.
x-ms-file-last-write-time: { now ¦ preserve } Opcional. Versión 2021-06-08 y posteriores. Puede especificar una de las opciones siguientes:
  • now: valor predeterminado. Novedades la última marca de tiempo de escritura en la hora de la solicitud.
  • preserve: mantiene la marca de tiempo de última escritura existente sin cambios.
x-ms-file-request-intent Obligatorio si Authorization el encabezado especifica un token de OAuth. El valor aceptable es backup. Este encabezado especifica que se debe conceder o Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/actionMicrosoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action si se incluyen en la directiva de RBAC asignada a la identidad autorizada mediante el Authorization encabezado . Disponible para la versión 2022-11-02 y posteriores.
x-ms-allow-trailing-dot: { <Boolean> } Opcional. Versión 2022-11-02 y posteriores. El valor booleano especifica si se debe recortar o no un punto final presente en la dirección URL de la solicitud. Para obtener más información, consulte Nomenclatura y referencia a recursos compartidos, directorios, archivos y metadatos.

Cuerpo de la solicitud

Datos que representan el intervalo que se va a cargar.

Solicitud de ejemplo: Actualización del intervalo de bytes

Request Syntax:  
PUT https://myaccount.file.core.windows.net/myshare/myfile?comp=range HTTP/1.1  
  
Request Headers:  
x-ms-write: update  
x-ms-date: Mon, 27 Jan 2014 22:15:50 GMT  
x-ms-version: 2014-02-14  
x-ms-range: bytes=0-65535  
Authorization: SharedKey myaccount:4KdWDiTdA9HmIF9+WF/8WfYOpUrFhieGIT7f0av+GEI=  
Content-Length: 65536  

Solicitud de ejemplo: Borrar intervalo de bytes

Request Syntax:  
PUT https://myaccount.file.core.windows.net/myshare/myfile?comp=range HTTP/1.1  
  
Request Headers:  
Range: bytes=1024-2048  
x-ms-write: clear  
x-ms-date: Mon, 27 Jan 2014 23:37:35 GMT  
x-ms-version: 2014-02-14  
Authorization: SharedKey myaccount:4KdWDiTdA9HmIF9+WF/8WfYOpUrFhieGIT7f0av+GEI=  

Response

La respuesta incluye un código de estado HTTP y un conjunto de encabezados de respuesta.

status code

Una operación correcta devuelve el código de estado 201 (Creado).

Para obtener más información sobre los códigos de estado, consulte Códigos de estado y error.

Encabezados de respuesta

La respuesta para esta operación incluye los encabezados siguientes. La respuesta también puede incluir otros encabezados HTTP estándar. Todos los encabezados estándar se ajustan a la especificación del protocolo HTTP/1.1.

Encabezado de respuesta Descripción
ETag La ETag contiene un valor que representa la versión del archivo. El valor se incluye entre comillas.
Last-Modified Devuelve la fecha y hora en que se modificó por última vez el directorio. El formato de la fecha sigue las convenciones de RFC 1123. Para obtener más información, vea Representar valores de fecha y hora en encabezados. Cualquier operación que modifique el recurso compartido o sus propiedades o metadatos actualiza la hora de la última modificación. Las operaciones en archivos no afectan a la hora de la última modificación del recurso compartido.
Content-MD5 Este encabezado se devuelve para que el cliente pueda comprobar la integridad del contenido del mensaje. El servicio file calcula el valor de este encabezado. No es necesariamente igual que el valor especificado en los encabezados de solicitud.
x-ms-request-id Identifica de forma única la solicitud que se realizó y se puede usar para solucionar problemas de la solicitud. Para más información, consulte Solución de problemas de operaciones de API.
x-ms-version Indica la versión del servicio de archivo que se usó para ejecutar la solicitud.
Date Valor de fecha y hora UTC generado por el servicio, que indica la hora en que se inició la respuesta.
x-ms-request-server-encrypted: { true ¦ false } Versión 2017-04-17 y posteriores. El valor de este encabezado se establece true en si el contenido de la solicitud se cifra correctamente mediante el algoritmo especificado. De lo contrario, el valor se establece en false.
x-ms-client-request-id Este encabezado se puede usar para solucionar problemas de solicitudes y respuestas correspondientes. 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 no contiene más de 1024 caracteres ASCII visibles. Si el x-ms-client-request-id encabezado no está presente en la solicitud, no está presente en la respuesta.
x-ms-file-last-write-time Versión 2021-06-08 y posteriores. La última hora de escritura del archivo, en el formato ISO 8601. Ejemplo: 2017-05-10T17:52:33.9551861Z.

Response body

Ninguno.

Respuesta de muestra

Response Status:  
HTTP/1.1 201 Created  

Response Headers:  
Transfer-Encoding: chunked  
Content-MD5: sQqNsWTgdUEFt6mb5y4/5Q==  
Date:Mon, 27 Jan 2014 22:33:35 GMT  
ETag: "0x8CB171BA9E94B0B"  
Last-Modified: Mon, 27 Jan 2014 12:13:31 GMT  
x-ms-version: 2014-02-14  
Content-Length: 0  
Server: Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0  

Authorization

Solo el propietario de la cuenta puede llamar a esta operación.

Comentarios

La operación Put Range escribe un intervalo de bytes en un archivo. Solo se puede llamar a esta operación en un archivo existente. No se puede llamar a para crear un archivo. Llamar a Put Range con un nombre de archivo que no existe actualmente devuelve el código de estado 404 (no encontrado).

Para crear un nuevo archivo, llame a Crear archivo. Un archivo puede tener un tamaño de hasta 4 TiB.

Se permite que se complete una Put Range operación de 10 minutos por MiB. Si la operación tarda más de 10 minutos por MiB en promedio, agota el tiempo de espera.

Si el archivo tiene una concesión activa, el cliente debe especificar un identificador de concesión válido en la solicitud para escribir un intervalo.

Operaciones de actualización de intervalos

Una llamada a Put Range con la opción Update realiza una escritura en contexto en el archivo especificado. El contenido del intervalo especificado se sobrescribe con la actualización. Cada intervalo que se envía con Put Range para una operación de actualización puede tener un tamaño de hasta 4 MiB. Si intenta cargar un intervalo mayor que 4 MiB, el servicio devuelve el código de estado 413 (solicitar entidad demasiado grande).

Operaciones de borrado de intervalo

La llamada a Put Range con la opción Clear libera espacio de almacenamiento siempre que el intervalo especificado esté alineado con 512 bytes. Los intervalos que se han borrado ya no se realizan el seguimiento como parte del archivo y no se devuelven en la respuesta Intervalo de lista . Si el intervalo especificado no está alineado con 512 bytes, la operación escribe ceros en el inicio o el final del intervalo que no está alineado con 512 bytes y libera el resto del intervalo dentro de ese intervalo alineado con 512 bytes.

Los intervalos que no se han borrado se devuelven en la respuesta Intervalos de lista . Para obtener un ejemplo, vea la sección "Intervalo sin ligned clear" de ejemplo que se muestra a continuación.

Concesión de archivos
Puede llamar a Lease File para obtener un bloqueo de escritura exclusivo en el archivo en otras escrituras durante un período infinito.

Bloqueos de intervalo de bytes de cliente SMB

El protocolo SMB permite que los bloqueos de intervalo de bytes administren el acceso de lectura y escritura a las regiones de un archivo. Esto significa que Put Range se produce un error si un cliente SMB tiene un bloqueo que se superpone con el intervalo especificado por la Put Range operación mediante x-ms-range. Para obtener más información, consulte Administración de bloqueos de archivos.

Notificaciones de cambio de directorio de cliente SMB

El protocolo SMB admite la función de API FindFirstChangeNotification que permite a las aplicaciones detectar cuándo se producen cambios en el sistema de archivos. Puede detectar cuándo se agrega, cambia o elimina un archivo o directorio, y cuando cambian el tamaño, los atributos o los descriptores de seguridad de un archivo. Los clientes SMB que usan esta API no recibirán notificaciones cuando se produzca un cambio de archivo o directorio a través de la API REST de Azure Files. Sin embargo, los cambios causados por otros clientes SMB propagan notificaciones.

Intervalo sin ligned clear de ejemplo

Supongamos que se crea un archivo con Create File y se escribe un único intervalo con Put Range, como se indica a continuación:

Request Syntax:  
PUT https://myaccount.file.core.windows.net/myshare/myfile?comp=range HTTP/1.1  

Request Headers:  
x-ms-write: updte  
x-ms-date: Mon, 27 Jan 2014 22:15:50 GMT  
x-ms-version: 2014-02-14  
x-ms-range: bytes=0-65536  
Authorization: SharedKey myaccount:4KdWDiTdA9HmIF9+WF/8WfYOpUrFhieGIT7f0av+GEI=  
Content-Length: 65536  

La realización de una operación List Ranges en el archivo devuelve el siguiente cuerpo de respuesta:

<?xml version="1.0" ecoding="utf-8"?>  
<Ranges>  
<Range>  
<Start>0</Start>  
<End>65536</End>  
</Range>  
</Ranges>  

Ahora supongamos que se realiza una operación de intervalo de bytes de intervalo no asignado:

Request Syntax:  
PUT https://myaccount.file.core.windows.net/myshare/myfile?comp=range HTTP/1.1  

Request Headers:  
Range: bytes=768-2304  
x-ms-write: clear  
x-ms-date: Mon, 27 Jan 2014 23:37:35 GMT  
x-ms-version: 2014-02-14  
Authorization: SharedKey myaccount:4KdWDiTdA9HmIF9+WF/8WfYOpUrFhieGIT7f0av+GEI=  

Una operación List Ranges posterior en el archivo devuelve el siguiente cuerpo de respuesta:

<?xml version="1.0" encoding="utf-8"?>  
<Ranges>  
<Range>  
<Start>0</Start>  
<End>1024</End>  
</Range>  
<Range>  
<Start>2048</Start>  
<End>65535</End>  
</Range>  
</Ranges>  

Tenga en cuenta que se han escrito ceros en el espacio sin alineación de 768-1024 y 2048-2304.

Put Range no se admite en una instantánea de recurso compartido, que es una copia de solo lectura de un recurso compartido. Se produce un error al intentar realizar esta operación en una instantánea de recurso compartido con 400 (InvalidQueryParameterValue).

Consulte también