Share via


Caricare un BLOB con JavaScript

Questo articolo illustra come caricare un BLOB usando la libreria client di Archiviazione di Azure per JavaScript. È possibile caricare dati in un BLOB in blocchi da un percorso di file, un flusso, un buffer o una stringa di testo. È anche possibile caricare BLOB con tag di indice.

Prerequisiti

  • Gli esempi in questo articolo presuppongono che sia già stato configurato un progetto per lavorare con la libreria client Archiviazione BLOB di Azure per JavaScript. Per informazioni sulla configurazione del progetto, tra cui l'installazione del pacchetto, l'importazione di moduli e la creazione di un oggetto client autorizzato per l'uso con le risorse dati, vedere Introduzione a Archiviazione BLOB di Azure e JavaScript.
  • Il meccanismo di autorizzazione deve disporre delle autorizzazioni per eseguire un'operazione di caricamento. Per altre informazioni, vedere le linee guida sull'autorizzazione per le operazioni API REST seguenti:

Caricare dati in un BLOB in blocchi

È possibile usare uno dei metodi seguenti per caricare i dati in un BLOB in blocchi:

Ognuno di questi metodi può essere chiamato usando un oggetto BlockBlobClient .

Caricare un BLOB in blocchi da un percorso di file

L'esempio seguente carica un BLOB in blocchi da un percorso di file locale:

// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadBlobFromLocalPath(containerClient, blobName, localFilePath){
  // Create blob client from container client
  const blockBlobClient = containerClient.getBlockBlobClient(blobName);

  await blockBlobClient.uploadFile(localFilePath);
}

Caricare un BLOB in blocchi da un flusso

L'esempio seguente carica un BLOB in blocchi creando un flusso leggibile e caricando il flusso:

// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// readableStream: Readable stream, for example, a stream returned from fs.createReadStream()
async function uploadBlobFromReadStream(containerClient, blobName, readableStream) {
  // Create blob client from container client
  const blockBlobClient = containerClient.getBlockBlobClient(blobName);

  // Upload data to block blob using a readable stream
  await blockBlobClient.uploadStream(readableStream);
}

Caricare un BLOB in blocchi da un buffer

L'esempio seguente carica un BLOB in blocchi da un buffer Node.js:

// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// buffer: blob contents as a buffer, for example, from fs.readFile()
async function uploadBlobFromBuffer(containerClient, blobName, buffer) {

  // Create blob client from container client
  const blockBlobClient = containerClient.getBlockBlobClient(blobName);

  // Upload buffer
  await blockBlobClient.uploadData(buffer);
}

Caricare un BLOB in blocchi da una stringa

L'esempio seguente carica un BLOB in blocchi da una stringa:

// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// fileContentsAsString: blob content
async function uploadBlobFromString(containerClient, blobName, fileContentsAsString){
  // Create blob client from container client
  const blockBlobClient = containerClient.getBlockBlobClient(blobName);

  await blockBlobClient.upload(fileContentsAsString, fileContentsAsString.length);
}

Caricare un BLOB in blocchi con le opzioni di configurazione

È possibile definire le opzioni di configurazione della libreria client durante il caricamento di un BLOB. Queste opzioni possono essere ottimizzate per migliorare le prestazioni, migliorare l'affidabilità e ottimizzare i costi. Gli esempi di codice in questa sezione illustrano come impostare le opzioni di configurazione usando l'interfaccia BlockBlobParallelUploadOptions e come passare tali opzioni come parametro a una chiamata al metodo di caricamento.

Specificare le opzioni di trasferimento dei dati al caricamento

È possibile configurare le proprietà in BlockBlobParallelUploadOptions per migliorare le prestazioni per le operazioni di trasferimento dei dati. La tabella seguente elenca le proprietà che è possibile configurare, insieme a una descrizione:

Proprietà Descrizione
blockSize Dimensione massima del blocco da trasferire per ogni richiesta come parte di un'operazione di caricamento.
concurrency Numero massimo di richieste parallele inviate in qualsiasi momento come parte di un singolo trasferimento parallelo.
maxSingleShotSize Se le dimensioni dei dati sono minori o uguali a questo valore, vengono caricate in un singolo inserimento anziché suddivise in blocchi. Se i dati vengono caricati in un singolo colpo, la dimensione del blocco viene ignorata. Il valore predefinito è 256 MiB.

Nell'esempio di codice seguente viene illustrato come impostare i valori per BlockBlobParallelUploadOptions e includere le opzioni come parte di una chiamata al metodo di caricamento. I valori forniti negli esempi non sono destinati a essere una raccomandazione. Per ottimizzare correttamente questi valori, è necessario considerare le esigenze specifiche dell'app.

// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadWithTransferOptions(containerClient, blobName, localFilePath) {
  // Specify data transfer options
  const uploadOptions = {
    blockSize: 4 * 1024 * 1024, // 4 MiB max block size
    concurrency: 2, // maximum number of parallel transfer workers
    maxSingleShotSize: 8 * 1024 * 1024, // 8 MiB initial transfer size
  } 

  // Create blob client from container client
  const blockBlobClient = containerClient.getBlockBlobClient(blobName);

  // Upload blob with index tags
  await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}

Caricare un BLOB in blocchi con tag di indice

I tag di indice BLOB classificano i dati nell'account di archiviazione usando gli attributi dei tag chiave-valore. Questi tag vengono indicizzati e esposti automaticamente come indice multidimensionale ricercabile per trovare facilmente i dati.

L'esempio seguente carica un BLOB in blocchi con tag di indice impostati usando BlockBlobParallelUploadOptions:

// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadWithIndexTags(containerClient, blobName, localFilePath) {
  // Specify index tags for blob
  const uploadOptions = {
    tags: {
      'Sealed': 'false',
      'Content': 'image',
      'Date': '2023-06-01',
    }
  }

  // Create blob client from container client
  const blockBlobClient = containerClient.getBlockBlobClient(blobName);

  // Upload blob with index tags
  await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}

Impostare il livello di accesso di un BLOB al caricamento

È possibile impostare il livello di accesso di un BLOB al caricamento usando l'interfaccia BlockBlobParallelUploadOptions . L'esempio di codice seguente illustra come impostare il livello di accesso durante il caricamento di un BLOB:

// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadWithAccessTier(containerClient, blobName, localFilePath) {
  // Specify access tier
  const uploadOptions = {
    tier: 'Cool',
  }

  // Create blob client from container client
  const blockBlobClient = containerClient.getBlockBlobClient(blobName);

  // Upload blob to cool tier
  await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}

L'impostazione del livello di accesso è consentita solo per i BLOB in blocchi. È possibile impostare il livello di accesso per un BLOB in blocchi su Hot, Cool, Coldo Archive. Per impostare il livello di accesso su Cold, è necessario usare una versione minima della libreria client 12.13.0.

Per altre informazioni sui livelli di accesso, vedere Panoramica dei livelli di accesso.

Risorse

Per altre informazioni sul caricamento di BLOB usando la libreria client Archiviazione BLOB di Azure per JavaScript, vedere le risorse seguenti.

Operazioni dell'API REST

Azure SDK per JavaScript contiene librerie basate sull'API REST di Azure, che consentono di interagire con le operazioni dell'API REST tramite paradigmi JavaScript noti. I metodi della libreria client per il caricamento dei BLOB usano le operazioni API REST seguenti:

Esempi di codice

Visualizzare esempi di codice di questo articolo (GitHub):

Risorse della libreria client

Vedi anche