Dela via


Ladda upp en blob med TypeScript

Den här artikeln visar hur du laddar upp en blob med hjälp av Azure Storage-klientbiblioteket för JavaScript. Du kan ladda upp data till en blockblob från en filsökväg, en ström, en buffert eller en textsträng. Du kan också ladda upp blobar med indextaggar.

Förutsättningar

  • Exemplen i den här artikeln förutsätter att du redan har ett projekt konfigurerat för att fungera med Azure Blob Storage-klientbiblioteket för JavaScript. Mer information om hur du konfigurerar projektet, inklusive paketinstallation, import av moduler och att skapa ett auktoriserat klientobjekt för att arbeta med dataresurser, finns i Kom igång med Azure Blob Storage och TypeScript.
  • Auktoriseringsmekanismen måste ha behörighet att utföra en uppladdningsåtgärd. Mer information finns i auktoriseringsvägledningen för följande REST API-åtgärder:

Ladda upp data till en blockblob

Du kan använda någon av följande metoder för att ladda upp data till en blockblob:

Var och en av dessa metoder kan anropas med hjälp av ett BlockBlobClient-objekt .

Ladda upp en blockblob från en filsökväg

I följande exempel laddas en blockblob upp från en lokal filsökväg:

async function uploadBlobFromLocalPath(
  containerClient: ContainerClient,
  blobName: string,
  localFilePath: string
): Promise<void> {
  // Create blob client from container client
  const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);

  await blockBlobClient.uploadFile(localFilePath);
}

Ladda upp en blockblob från en dataström

I följande exempel laddas en blockblob upp genom att skapa en läsbar ström och ladda upp strömmen:

async function uploadBlobFromReadStream(
  containerClient: ContainerClient,
  blobName: string,
  readStream: fs.ReadStream
): Promise<void> {
  // Create blob client from container client
  const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);

  await blockBlobClient.uploadStream(readStream);
}

Ladda upp en blockblob från en buffert

I följande exempel laddas en blockblob upp från en Node.js buffert:

async function uploadBlobFromBuffer(
  containerClient: ContainerClient, blobName: string, buffer: Buffer
): Promise<void> {
  // Create blob client from container client
  const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);

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

Ladda upp en blockblob från en sträng

I följande exempel laddas en blockblob upp från en sträng:

async function uploadBlobFromString(
  containerClient: ContainerClient,
  blobName: string,
  fileContents: string
): Promise<void> {
  // Create blob client from container client
  const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);

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

Ladda upp en blockblob med konfigurationsalternativ

Du kan definiera konfigurationsalternativ för klientbibliotek när du laddar upp en blob. Dessa alternativ kan justeras för att förbättra prestanda, förbättra tillförlitligheten och optimera kostnaderna. Kodexemplen i det här avsnittet visar hur du ställer in konfigurationsalternativ med hjälp av gränssnittet BlockBlobParallelUploadOptions och hur du skickar dessa alternativ som en parameter till ett uppladdningsmetodanrop.

Ange alternativ för dataöverföring vid uppladdning

Du kan konfigurera egenskaper i BlockBlobParallelUploadOptions för att förbättra prestanda för dataöverföringsåtgärder. I följande tabell visas de egenskaper som du kan konfigurera, tillsammans med en beskrivning:

Property beskrivning
blockSize Den maximala blockstorlek som ska överföras för varje begäran som en del av en uppladdningsåtgärd.
concurrency Det maximala antalet parallella begäranden som utfärdas vid en viss tidpunkt som en del av en enda parallell överföring.
maxSingleShotSize Om datastorleken är mindre än eller lika med det här värdet laddas den upp i en enda uppsättning i stället för att delas upp i segment. Om data laddas upp i ett enda skott ignoreras blockstorleken. Standardvärdet är 256 MiB.

I följande kodexempel visas hur du anger värden för BlockBlobParallelUploadOptions och inkluderar alternativen som en del av ett uppladdningsmetodanrop. Värdena som anges i exemplen är inte avsedda att vara en rekommendation. Om du vill justera dessa värden korrekt måste du ta hänsyn till appens specifika behov.

async function uploadWithTransferOptions(
  containerClient: ContainerClient,
  blobName: string,
  localFilePath: string
): Promise<void> {
  // Specify data transfer options
  const uploadOptions: BlockBlobParallelUploadOptions = {
    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: BlockBlobClient = containerClient.getBlockBlobClient(blobName);

  await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}

Ladda upp en blockblob med indextaggar

Blobindextaggar kategoriserar data i ditt lagringskonto med hjälp av taggattribut för nyckelvärde. Dessa taggar indexeras automatiskt och exponeras som ett sökbart flerdimensionellt index för att enkelt hitta data.

I följande exempel laddas en blockblob upp med indextaggar inställda med BlockBlobParallelUploadOptions:

async function uploadBlobWithIndexTags(
  containerClient: ContainerClient,
  blobName: string,
  localFilePath: string
): Promise<void> {
  // Specify index tags for blob
  const uploadOptions: BlockBlobParallelUploadOptions = {
    tags: {
      'Sealed': 'false',
      'Content': 'image',
      'Date': '2023-06-01',
    }
  };

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

  await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}

Ange åtkomstnivån för en blob vid uppladdning

Du kan ange åtkomstnivån för en blob vid uppladdning med hjälp av gränssnittet BlockBlobParallelUploadOptions . Följande kodexempel visar hur du anger åtkomstnivån när du laddar upp en blob:

async function uploadBlobWithAccessTier(
  containerClient: ContainerClient,
  blobName: string,
  localFilePath: string
): Promise<void> {
  // Upload blob to 'Cool' access tier
  const uploadOptions: BlockBlobParallelUploadOptions = {
    tier: 'Cool'
  };

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

  await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}

Det går bara att ange åtkomstnivån för blockblobar. Du kan ange åtkomstnivån för en blockblob till Hot, Cool, Coldeller Archive. Om du vill ange åtkomstnivån till Coldmåste du använda en lägsta klientbiblioteksversion på 12.13.0.

Mer information om åtkomstnivåer finns i Översikt över åtkomstnivåer.

Resurser

Mer information om hur du laddar upp blobar med hjälp av Azure Blob Storage-klientbiblioteket för JavaScript och TypeScript finns i följande resurser.

REST API-åtgärder

Azure SDK för JavaScript och TypeScript innehåller bibliotek som bygger på Azure REST API, så att du kan interagera med REST API-åtgärder via välbekanta språkparadigm. Klientbiblioteksmetoderna för att ladda upp blobar använder följande REST API-åtgärder:

Kodexempel

Visa kodexempel från den här artikeln (GitHub):

Klientbiblioteksresurser

Se även