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 | |
NFS |
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 clear en , el valor de este encabezado debe establecerse 0 en . |
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 clear en . 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:
|
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:
|
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/action Microsoft.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).