Condividi tramite


Put Range

L'operazione Put Range scrive un intervallo di byte in un file.

Disponibilità del protocollo

Protocollo di condivisione file abilitato Disponibile
SMB Sì
NFS No

Richiesta

La richiesta Put Range può essere costruita come segue. È consigliabile usare HTTPS.

Metodo URI richiesta Versione HTTP
PUT https://myaccount.file.core.windows.net/myshare/mydirectorypath/myfile?comp=range HTTP/1.1

Sostituire i componenti del percorso mostrati nell'URI di richiesta con valori personalizzati, come illustrato di seguito:

Componente percorso Descrizione
myaccount nome dell'account di archiviazione.
myshare Nome della condivisione file.
mydirectorypath Facoltativa. Percorso della directory padre.
myfile Nome del file.

Per informazioni sulle restrizioni di denominazione del percorso, vedere Condivisioni nome e riferimenti, directory, file e metadati.

Parametri URI

Nell'URI richiesta è possibile specificare i seguenti parametri aggiuntivi.

Parametro Descrizione
timeout Facoltativa. Il parametro timeout viene espresso in secondi. Per altre informazioni, vedere Impostare timeout per le operazioni del servizio file.

Intestazioni della richiesta

Le intestazioni di richiesta obbligatorie e facoltative sono descritte nella tabella seguente:

Intestazione della richiesta Descrizione
Authorization Obbligatorio. Specifica lo schema di autorizzazione, il nome dell'account e la firma. Per altre informazioni, vedere Autorizzare le richieste ad Archiviazione di Azure.
Date o x-ms-date Obbligatorio. Specifica la data per la richiesta nel fuso orario UTC (Coordinated Universal Time). Per altre informazioni, vedere Autorizzare le richieste ad Archiviazione di Azure.
x-ms-version Obbligatorio per tutte le richieste autorizzate. Specifica la versione dell'operazione da usare per questa richiesta. Per altre informazioni, vedere Controllo delle versioni per i servizi di archiviazione di Azure.
Range o x-ms-range Range o x-ms-range è obbligatorio.

Specifica l'intervallo di byte da scrivere. È necessario specificare l'inizio e la fine dell'intervallo. Questa intestazione è definita dalla specifica del protocollo HTTP/1.1.

Per un'operazione di aggiornamento, l'intervallo può essere fino a 4 MiB di dimensioni. Per un'operazione di cancellazione, le dimensioni dell'intervallo possono estendersi fino al valore delle dimensioni totali del file.

Il servizio File accetta solo un singolo intervallo di byte per le Range intestazioni e x-ms-range e l'intervallo di byte deve essere specificato nel formato seguente: bytes=startByte-endByte.

Se Range e x-ms-range sono entrambi specificati, il servizio usa il valore di x-ms-range. Per altre informazioni, vedere Specificare l'intestazione dell'intervallo per le operazioni del servizio file.
Content-Length Obbligatorio. Specifica il numero di byte trasmessi nel corpo della richiesta. Quando l'intestazione x-ms-write è impostata su clear, il valore di questa intestazione deve essere impostato su 0.
Content-MD5 Facoltativa. Hash MD5 del contenuto. Questo hash viene usato per verificare l'integrità dei dati durante il trasporto. Quando viene specificata l'intestazione, File di Azure confronta l'hash Content-MD5 del contenuto che è arrivato con il valore di intestazione inviato. Se i due hash non corrispondono, l'operazione non riesce con il codice di errore 400 (richiesta non valida).

L'intestazione Content-MD5 non è consentita quando l'intestazione x-ms-write è impostata su clear. Se è incluso nella richiesta, il servizio file restituisce il codice di stato 400 (richiesta non valida).
x-ms-write: { update ¦ clear } Obbligatorio. È necessario specificare una delle opzioni seguenti:
  • update: scrive i byte specificati dal corpo della richiesta nell'intervallo specificato. Per eseguire l'aggiornamento, è necessario che le intestazioni Range e Content-Length corrispondano.
  • clear: cancella l'intervallo specificato e libera lo spazio usato nell'archiviazione per tale intervallo. Per cancellare un intervallo, impostare l'intestazione su 0e impostare l'intestazione Content-Length su un valore che indica l'intervallo Range da cancellare, fino alla dimensione massima del file.
x-ms-lease-id: <ID> Obbligatorio se il file ha un lease attivo. Disponibile per la versione 2019-02-02 e successiva.
x-ms-client-request-id Facoltativa. Fornisce un valore opaco generato dal client con un limite di caratteri di 1 kibibyte (KiB) registrato nei log quando la registrazione è configurata. È consigliabile usare questa intestazione per correlare le attività lato client con le richieste ricevute dal server. Per altre informazioni, vedere Monitorare File di Azure.
x-ms-file-last-write-time: { now ¦ preserve } Facoltativa. Versione 2021-06-08 e versioni successive. È possibile specificare una delle opzioni seguenti:
  • now: valore predefinito. Aggiornamenti l'ultimo timestamp di scrittura all'ora della richiesta.
  • preserve: mantiene invariato l'ultimo timestamp di scrittura esistente.
x-ms-file-request-intent Obbligatorio se Authorization l'intestazione specifica un token OAuth. Il valore accettabile è backup. Questa intestazione specifica che l'oggetto Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action o Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action deve essere concesso se sono inclusi nei criteri di controllo degli accessi in base al ruolo assegnati all'identità autorizzata usando l'intestazione Authorization . Disponibile per la versione 2022-11-02 e versioni successive.
x-ms-allow-trailing-dot: { <Boolean> } Facoltativa. Versione 2022-11-02 e versioni successive. Il valore booleano specifica se un punto finale presente nell'URL della richiesta deve essere tagliato o meno. Per altre informazioni, vedere Denominazione e riferimenti a condivisioni, directory, file e metadati.

Testo della richiesta

Dati che rappresentano l'intervallo da caricare.

Richiesta di esempio: Aggiornamento dell'intervallo di byte

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  

Richiesta di esempio: Cancellare l'intervallo di byte

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=  

Risposta

Nella risposta sono inclusi un codice di stato HTTP e un set di intestazioni per la risposta.

Codice stato

Un'operazione completata correttamente restituisce il codice di stato 201 (Creato).

Per altre informazioni sui codici di stato, vedere Codici di stato e di errore.

Intestazioni di risposta

Nella risposta per questa operazione sono incluse le intestazioni riportate di seguito; inoltre, possono essere incluse intestazioni HTTP standard aggiuntive. Tutte le intestazioni standard sono conformi alla specifica del protocollo HTTP/1.1.

Intestazione risposta Descrizione
ETag L'ETag contiene un valore che rappresenta la versione del file. Il valore è racchiuso tra virgolette.
Last-Modified Restituisce la data e l'ora dell'ultima modifica apportata alla directory. Il formato data è conforme a RFC 1123. Per altre informazioni, vedere Rappresentare i valori di data/ora nelle intestazioni. Qualsiasi operazione che modifica la condivisione o le relative proprietà o metadati comporta l'aggiornamento dell'ora dell'ultima modifica. Le operazioni sui file non influiscono sull'ora dell'ultima modifica della condivisione.
Content-MD5 Questa intestazione viene restituita in modo che il client possa verificare l'integrità del contenuto del messaggio. Il valore di questa intestazione viene calcolato dal servizio file. Non è necessariamente uguale al valore specificato nelle intestazioni della richiesta.
x-ms-request-id Identifica in modo univoco la richiesta effettuata e può essere usata per risolvere i problemi della richiesta. Per altre informazioni, vedere Risolvere i problemi relativi alle operazioni api.
x-ms-version Indica la versione del servizio file utilizzata per eseguire la richiesta.
Date Valore di data/ora UTC generato dal servizio, che indica l'ora di avvio della risposta.
x-ms-request-server-encrypted: { true ¦ false } Versione 2017-04-17 e successive. Il valore di questa intestazione è impostato su true se il contenuto della richiesta viene crittografato correttamente usando l'algoritmo specificato. In caso contrario, il valore è impostato su false.
x-ms-client-request-id Questa intestazione può essere usata per risolvere i problemi relativi alle richieste e alle risposte corrispondenti. Il valore di questa intestazione è uguale al valore dell'intestazione x-ms-client-request-id se è presente nella richiesta e il valore non contiene più di 1.024 caratteri ASCII visibili. Se l'intestazione x-ms-client-request-id non è presente nella richiesta, non è presente nella risposta.
x-ms-file-last-write-time Versione 2021-06-08 e successive. Ora dell'ultima scrittura per il file, nel formato ISO 8601. Esempio: 2017-05-10T17:52:33.9551861Z.

Corpo della risposta

Nessuno.

Risposta di esempio

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  

Autorizzazione

Solo il proprietario dell'account può chiamare questa operazione.

Commenti

L'operazione Put Range scrive un intervallo di byte in un file. Questa operazione può essere chiamata solo su un file esistente. Non può essere chiamato per creare un nuovo file. La chiamata Put Range con un nome di file che non esiste attualmente restituisce il codice di stato 404 (Non trovato).

Per creare un nuovo file, chiamare Crea file. Un file può avere dimensioni fino a 4 TiB.

Per il completamento di un'operazione Put Range è consentito 10 minuti per miB. Se l'operazione richiede più di 10 minuti per miB in media, si verifica il timeout.

Se il file ha un lease attivo, il client deve specificare un ID lease valido nella richiesta per scrivere un intervallo.

Operazioni di aggiornamento dell'intervallo

Se si chiama Put Range con l'opzione Update, viene eseguita una scrittura sul posto nel file specificato. Il contenuto del file specificato viene sovrascritto con l'aggiornamento. Ogni intervallo inviato con Put Range per un'operazione di aggiornamento può avere dimensioni fino a 4 MiB. Se si tenta di caricare un intervallo superiore a 4 MiB, il servizio restituisce il codice di stato 413 (Entità richiesta troppo grande).

Operazioni di cancellazione dell'intervallo

Se si chiama Put Range con l'opzione Clear, viene liberato lo spazio usato nella risorsa di archiviazione, a condizione che l'intervallo specificato sia allineato a 512 byte. Gli intervalli cancellati non vengono più rilevati come parte del file e non vengono restituiti nella risposta Elenco intervallo . Se l'intervallo specificato non è allineato a 512 byte, l'operazione scrive zeri all'inizio o alla fine dell'intervallo non allineato a 512 byte e libera il resto dell'intervallo all'interno di tale intervallo allineato a 512 byte.

Tutti gli intervalli che non sono stati cancellati vengono restituiti nella risposta Elenchi intervalli . Per un esempio, vedere la sezione "Sample unligned clear range" (Esempio di intervallo non allineato non allineato) riportata di seguito.

Lease di file
È possibile chiamare il file di lease per ottenere un blocco di scrittura esclusivo nel file su altre scritture per una durata infinita.

Blocchi dell'intervallo di byte del client SMB

Il protocollo SMB consente ai blocchi di intervalli di byte di gestire l'accesso in lettura e scrittura alle aree di un file. Ciò significa che Put Range ha esito negativo se un client SMB ha un blocco che si sovrappone all'intervallo specificato dall'operazione Put Range tramite x-ms-range. Per altre informazioni, vedere Gestire i blocchi di file.

Notifiche di modifica della directory client SMB

Il protocollo SMB supporta la funzione API FindFirstChangeNotification che consente alle applicazioni di rilevare quando si verificano modifiche nel file system. Può rilevare quando un file o una directory viene aggiunta, modificata o eliminata e quando cambiano le dimensioni, gli attributi o i descrittori di sicurezza di un file. I client SMB che usano questa API non riceveranno notifiche quando si verifica una modifica di file o directory tramite l'API REST File di Azure. Tuttavia, le modifiche causate da altri client SMB propagano le notifiche.

Intervallo non allineato di esempio

Si supponga che un file venga creato con Create File e un singolo intervallo sia scritto con Put Range, come indicato di seguito:

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  

L'esecuzione di un'operazione List Ranges nel file restituisce il corpo della risposta seguente:

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

Si supponga ora che venga eseguita un'operazione di intervallo di byte non allineato:

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=  

Un'operazione list ranges successiva sul file restituisce il corpo della risposta seguente:

<?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>  

Si notino gli zero scritti nello spazio non allineato da 768-1024 e 2048-2304.

Put Range non è supportato in uno snapshot di condivisione, ovvero una copia di sola lettura di una condivisione. Un tentativo di eseguire questa operazione su uno snapshot di condivisione ha esito negativo con 400 (InvalidQueryParameterValue).

Vedi anche