Copiare un BLOB da un URL dell'oggetto di origine con TypeScript

Questo articolo illustra come copiare un BLOB da un URL dell'oggetto di origine usando la libreria client di Archiviazione di Azure per JavaScript. È possibile copiare un BLOB da un'origine all'interno dello stesso account di archiviazione, da un'origine in un account di archiviazione diverso o da qualsiasi oggetto accessibile recuperato tramite una richiesta HTTP GET in un determinato URL.

I metodi della libreria client illustrati in questo articolo usano le operazioni dell'API REST Put Blob from URL e Put Block From URL. Questi metodi sono preferiti per gli scenari di copia in cui si desidera spostare i dati in un account di archiviazione e avere un URL per l'oggetto di origine. Per le operazioni di copia in cui si vuole pianificare in modo asincrono, vedere Copiare un BLOB con pianificazione asincrona usando TypeScript.

Prerequisiti

  • Gli esempi in questo articolo presuppongono che sia già stato configurato un progetto per l’uso con la libreria client di Archiviazione BLOB di Azure per JavaScript. Per informazioni sulla configurazione del progetto, incluse l'installazione del pacchetto, l'importazione di moduli e la creazione di un oggetto client autorizzato per l'uso con le risorse dati, consultare Introduzione ad Archiviazione BLOB di Azure e TypeScript.
  • Il meccanismo di autorizzazione deve disporre delle autorizzazioni per eseguire un'operazione di copia. Per altre informazioni, consultare il materiale sussidiario per l'autorizzazione per l'operazione API REST seguente:

Informazioni sulla copia di BLOB da un URL dell'oggetto di origine

L'operazione Put Blob From URL crea un nuovo BLOB in blocchi in cui il contenuto del BLOB viene letto da un URL specificato. L'operazione viene completata in modo sincrono.

L'origine può essere qualsiasi oggetto recuperabile tramite una richiesta HTTP GET standard nell'URL specificato. Sono inclusi BLOB in blocchi, BLOB di accodamento, BLOB di pagine, snapshot BLOB, versioni BLOB o qualsiasi oggetto accessibile all'interno o all'esterno di Azure.

Quando l'oggetto di origine è un BLOB in blocchi, tutto il contenuto BLOB di cui è stato eseguito il commit viene copiato. Tuttavia, l'elenco di blocchi non viene mantenuto e i blocchi di cui non è stato eseguito il commit non vengono copiati. Il contenuto del BLOB di destinazione è identico a quello dell'origine, ma l'elenco di blocchi di cui è stato eseguito il commit non viene mantenuto.

La destinazione è sempre un BLOB in blocchi, un BLOB in blocchi esistente o un nuovo BLOB in blocchi creato dall'operazione. Il contenuto di un BLOB esistente viene sovrascritto con il contenuto del nuovo BLOB.

L'operazione Put Blob From URL copia sempre l'intero BLOB di origine. La copia di un intervallo di byte o di un set di blocchi non è supportata. Per eseguire aggiornamenti parziali del contenuto di un BLOB in blocchi usando un URL di origine, usare l'API Put Block From URL insieme a Put Block List.

Per altre informazioni sull'operazione Put Blob From URL, incluse le limitazioni delle dimensioni dei BLOB e le considerazioni sulla fatturazione, vedere Osservazioni su Put Blob from URL.

Copiare un BLOB da un URL dell'oggetto di origine

Questa sezione offre una panoramica dei metodi forniti dalla libreria client di Archiviazione di Azure per JavaScript e TypeScript per eseguire un'operazione di copia da un URL dell'oggetto di origine.

Il metodo seguente esegue il wrapping dell'operazione Put Blob from URL dell'API REST e crea un nuovo BLOB in blocchi in cui il contenuto viene letto da un URL specificato:

Questi metodi sono preferiti per gli scenari in cui si desidera spostare i dati in un account di archiviazione e avere un URL per l'oggetto di origine.

Per oggetti di grandi dimensioni, è possibile lavorare con singoli blocchi. Il metodo seguente esegue il wrapping dell'operazione dell’API REST Put Block From URL. Questo metodo crea un nuovo blocco di cui eseguire il commit come parte di un BLOB in cui il contenuto viene letto da un URL di origine:

Copiare un BLOB da un'origine in Azure

Se si copia un BLOB da un'origine all'interno di Azure, l'accesso al BLOB di origine può essere autorizzato tramite Microsoft Entra ID, una firma di accesso condiviso o una chiave dell'account.

L'esempio seguente illustra uno scenario per la copia da un BLOB di origine in Azure:

async function copyFromSourceInAzure(
  sourceBlob: BlockBlobClient,
  destinationBlob: BlockBlobClient
): Promise<void> {
  // Get the source blob URL and create the destination blob
  await destinationBlob.syncUploadFromURL(sourceBlob.url);
}

Il metodo syncUploadFromURL può accettare anche un parametro BlockBlobSyncUploadFromURLOptions per specificare altre opzioni per l'operazione.

Copiare un BLOB da un'origine all'esterno di Azure

È possibile eseguire un'operazione di copia su qualsiasi oggetto di origine recuperabile tramite una richiesta HTTP GET in un determinato URL, inclusi gli oggetti accessibili all'esterno di Azure. L'esempio seguente illustra uno scenario per la copia di un BLOB da un URL dell'oggetto di origine accessibile.

async function copyFromExternalSource(
  sourceUrl: string,
  destinationBlob: BlockBlobClient
): Promise<void> {
  // Create the destination blob from the source URL
  await destinationBlob.syncUploadFromURL(sourceUrl);
}

Risorse

Per altre informazioni sulla copia di BLOB con la libreria client di Archiviazione BLOB di Azure per JavaScript e TypeScript, vedere le risorse seguenti.

Operazioni dell'API REST

Azure SDK per JavaScript e TypeScript contiene librerie basate sull'API REST di Azure che consentono di interagire con le operazioni dell'API REST tramite paradigmi di linguaggio noti. I metodi della libreria client illustrati in questo articolo usano le operazioni API REST seguenti:

Esempi di codice

Risorse della libreria client