Een blob uploaden met JavaScript

In dit artikel leest u hoe u een blob uploadt met behulp van de Azure Storage-clientbibliotheek voor JavaScript. U kunt gegevens uploaden naar een blok-blob vanuit een bestandspad, een stroom, een buffer of een tekenreeks. U kunt ook blobs met indextags uploaden.

Vereisten

  • In de voorbeelden in dit artikel wordt ervan uitgegaan dat u al een project hebt ingesteld om te werken met de Azure Blob Storage-clientbibliotheek voor JavaScript. Zie Aan de slag met Azure Blob Storage en JavaScript voor meer informatie over het instellen van uw project, inclusief pakketinstallatie, het importeren van modules en het maken van een geautoriseerd clientobject om met gegevensbronnen te werken.
  • Het autorisatiemechanisme moet machtigingen hebben om een uploadbewerking uit te voeren. Zie de autorisatierichtlijnen voor de volgende REST API-bewerkingen voor meer informatie:

Gegevens uploaden naar een blok-blob

U kunt een van de volgende methoden gebruiken om gegevens te uploaden naar een blok-blob:

Elk van deze methoden kan worden aangeroepen met behulp van een BlockBlobClient-object .

Een blok-blob uploaden vanuit een bestandspad

In het volgende voorbeeld wordt een blok-blob geüpload vanuit een lokaal bestandspad:

// 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);
}

Een blok-blob uploaden vanuit een stream

In het volgende voorbeeld wordt een blok-blob geüpload door een leesbare stroom te maken en de stream te uploaden:

// 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);
}

Een blok-blob uploaden vanuit een buffer

In het volgende voorbeeld wordt een blok-blob geüpload vanuit een Node.js buffer:

// 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);
}

Een blok-blob uploaden vanuit een tekenreeks

In het volgende voorbeeld wordt een blok-blob geüpload vanuit een tekenreeks:

// 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);
}

Een blok-blob uploaden met configuratieopties

U kunt configuratieopties voor de clientbibliotheek definiëren bij het uploaden van een blob. Deze opties kunnen worden afgestemd om de prestaties te verbeteren, de betrouwbaarheid te verbeteren en de kosten te optimaliseren. De codevoorbeelden in deze sectie laten zien hoe u configuratieopties instelt met behulp van de interface BlockBlobParallelUploadOptions en hoe u deze opties als een parameter doorgeeft aan een aanroep van de methode voor uploaden.

Opties voor gegevensoverdracht opgeven bij het uploaden

U kunt eigenschappen configureren in BlockBlobParallelUploadOptions om de prestaties voor gegevensoverdracht te verbeteren. De volgende tabel bevat de eigenschappen die u kunt configureren, samen met een beschrijving:

Eigenschap Beschrijving
blockSize De maximale blokgrootte die moet worden overgedragen voor elke aanvraag als onderdeel van een uploadbewerking.
concurrency Het maximum aantal parallelle aanvragen dat op een bepaald moment wordt uitgegeven als onderdeel van één parallelle overdracht.
maxSingleShotSize Als de grootte van de gegevens kleiner is dan of gelijk is aan deze waarde, wordt deze geüpload in één put in plaats van opgesplitst in segmenten. Als de gegevens in één opname worden geüpload, wordt de blokgrootte genegeerd. De standaardwaarde is 256 MiB.

In het volgende codevoorbeeld ziet u hoe u waarden instelt voor BlockBlobParallelUploadOptions en de opties opneemt als onderdeel van een aanroep van een uploadmethode. De waarden in de voorbeelden zijn niet bedoeld als aanbeveling. Als u deze waarden goed wilt afstemmen, moet u rekening houden met de specifieke behoeften van uw 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);
}

Een blok-blob met indextags uploaden

Blob-indextags categoriseren gegevens in uw opslagaccount met behulp van tagkenmerken voor sleutelwaarden. Deze tags worden automatisch geïndexeerd en weergegeven als een doorzoekbare multidimensionale index om eenvoudig gegevens te vinden.

In het volgende voorbeeld wordt een blok-blob geüpload met indextags die zijn ingesteld met behulp van 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);
}

De toegangslaag van een blob instellen bij het uploaden

U kunt de toegangslaag van een blob instellen bij het uploaden met behulp van de interface BlockBlobParallelUploadOptions . In het volgende codevoorbeeld ziet u hoe u de toegangslaag instelt bij het uploaden van een 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);
}

Het instellen van de toegangslaag is alleen toegestaan voor blok-blobs. U kunt de toegangslaag voor een blok-blob instellen op Hot, Cool, Coldof Archive. Als u de toegangslaag wilt instellen op Cold, moet u minimaal versie 12.13.0 van de clientbibliotheek gebruiken.

Zie Overzicht van toegangslagen voor meer informatie over toegangslagen.

Resources

Zie de volgende bronnen voor meer informatie over het uploaden van blobs met behulp van de Azure Blob Storage-clientbibliotheek voor JavaScript.

REST API-bewerkingen

De Azure SDK voor JavaScript bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via vertrouwde JavaScript-paradigma's. De clientbibliotheekmethoden voor het uploaden van blobs maken gebruik van de volgende REST API-bewerkingen:

Codevoorbeelden

Bekijk codevoorbeelden uit dit artikel (GitHub):

Resources voor clientbibliotheek

Zie ook