Sdílet prostřednictvím


Stažení objektu blob pomocí TypeScriptu

Tento článek ukazuje, jak stáhnout objekt blob pomocí klientské knihovny azure Storage pro JavaScript. Data objektů blob si můžete stáhnout do různých cílů, včetně místní cesty k souboru, datového proudu nebo textového řetězce.

Požadavky

  • Příklady v tomto článku předpokládají, že už máte projekt nastavený tak, aby fungoval s klientskou knihovnou Azure Blob Storage pro JavaScript. Další informace o nastavení projektu, včetně instalace balíčku, importu modulů a vytvoření autorizovaného klientského objektu pro práci s datovými prostředky, najdete v tématu Začínáme se službou Azure Blob Storage a TypeScriptem.
  • Autorizační mechanismus musí mít oprávnění k provedení operace stahování. Další informace najdete v pokynech k autorizaci pro následující operaci rozhraní REST API:

Stažení objektu blob

Ke stažení objektu blob můžete použít některou z následujících metod:

Stažení do cesty k souboru

Následující příklad stáhne objekt blob pomocí cesty k souboru s metodou BlobClient.downloadToFile . Tato metoda je k dispozici pouze v modulu runtime Node.js:

async function downloadBlobToFile(
  containerClient: ContainerClient,
  blobName,
  fileNameWithPath
): Promise<void> {
  const blobClient = await containerClient.getBlobClient(blobName);

  const downloadResult = await blobClient.downloadToFile(fileNameWithPath);
  if (!downloadResult.errorCode) {
    console.log(
      `download of ${blobName} success ${downloadResult.blobCommittedBlockCount}`
    );
  }
}

Stažení jako streamu

Následující příklad stáhne objekt blob vytvořením objektu Node.js zapisovatelného streamu a následným propojením do tohoto datového proudu pomocí metody BlobClient.download .

async function downloadBlobAsStream(
  containerClient: ContainerClient,
  blobName,
  writableStream
) {
  const blobClient: BlobClient = await containerClient.getBlobClient(blobName);

  const downloadResponse = await blobClient.download();

  if (!downloadResponse.errorCode && downloadResponse?.readableStreamBody) {
    downloadResponse.readableStreamBody.pipe(writableStream);
    console.log(`download of ${blobName} succeeded`);
  }
}

Stažení do řetězce

Následující Node.js příklad stáhne objekt blob do řetězce pomocí metody BlobClient.download . V Node.js vrací data objektů blob v objektu readableStreamBodyblob .

async function downloadBlobToString(
  containerClient: ContainerClient,
  blobName
): Promise<void> {
  const blobClient: BlobClient = await containerClient.getBlobClient(blobName);

  const downloadResponse: BlobDownloadResponseParsed =
    await blobClient.download();

  if (!downloadResponse.errorCode && downloadResponse.readableStreamBody) {
    const downloaded = await streamToBuffer(
      downloadResponse.readableStreamBody
    );
    if (downloaded) {
      console.log('Downloaded blob content:', downloaded.toString());
    }
  }
}
async function streamToBuffer(readableStream) {
  return new Promise((resolve, reject) => {
    const chunks: Buffer[] = [];

    readableStream.on('data', (data) => {
      const content: Buffer = data instanceof Buffer ? data : Buffer.from(data);
      chunks.push(content);
    });
    readableStream.on('end', () => {
      resolve(Buffer.concat(chunks));
    });
    readableStream.on('error', reject);
  });
}

Pokud pracujete s JavaScriptem v prohlížeči, vrátí se data objektů blob v objektu blob s příslibem BlobBody. Další informace najdete v příkladu použití prohlížečů na webu BlobClient.download.

Zdroje informací

Další informace o tom, jak stáhnout objekty blob pomocí klientské knihovny služby Azure Blob Storage pro JavaScript a TypeScript, najdete v následujících zdrojích informací.

Operace rozhraní REST API

Sada Azure SDK pro JavaScript a TypeScript obsahuje knihovny, které jsou založené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých jazykových paradigmat. Metody klientské knihovny pro stahování objektů blob používají následující operaci rozhraní REST API:

Ukázky kódu

Prohlédněte si ukázky kódu z tohoto článku (GitHub):

Prostředky klientské knihovny