TypeScript ile blob indirme

Bu makalede JavaScript için Azure Depolama istemci kitaplığını kullanarak blob indirme işlemi gösterilmektedir. Blob verilerini yerel dosya yolu, akış veya metin dizesi gibi çeşitli hedeflere indirebilirsiniz.

Önkoşullar

  • Bu makaledeki örneklerde, JavaScript için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere ayarlanmış bir projeniz olduğu varsayılır. Paket yükleme, modülleri içeri aktarma ve veri kaynaklarıyla çalışmak üzere yetkili bir istemci nesnesi oluşturma gibi projenizi ayarlama hakkında bilgi edinmek için bkz. Azure Blob Depolama ve TypeScript'i kullanmaya başlama.
  • Yetkilendirme mekanizmasının indirme işlemi gerçekleştirme izinleri olmalıdır. Daha fazla bilgi edinmek için aşağıdaki REST API işlemi için yetkilendirme kılavuzuna bakın:

Blobu indirme

Blob indirmek için aşağıdaki yöntemlerden herhangi birini kullanabilirsiniz:

Dosya yoluna indirme

Aşağıdaki örnek BlobClient.downloadToFile yöntemiyle bir dosya yolu kullanarak blobu indirir. Bu yöntem yalnızca Node.js çalışma zamanında kullanılabilir:

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

Akış olarak indirme

Aşağıdaki örnek, yazılabilir bir Node.js akış nesnesi oluşturup BlobClient.download yöntemiyle bu akışa ekleyerek blobu indirir.

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

Dizeye indirme

Aşağıdaki Node.js örnek BlobClient.download yöntemiyle bir dizeye blob indirir. Node.js'de blob verileri bir readableStreamBodyiçinde döndürür.

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

Tarayıcıda JavaScript ile çalışıyorsanız blob verileri promise blobBody içinde döndürülüyor. Daha fazla bilgi edinmek için BlobClient.download adresinde tarayıcılar için örnek kullanıma bakın.

Kaynaklar

JavaScript ve TypeScript için Azure Blob Depolama istemci kitaplığını kullanarak blobları indirme hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.

REST API işlemleri

JavaScript ve TypeScript için Azure SDK'sı, Azure REST API'sinin üzerine inşa edilerek tanıdık dil paradigmalarıyla REST API işlemleriyle etkileşim kurmanızı sağlayan kitaplıklar içerir. Blobları indirmek için istemci kitaplığı yöntemleri aşağıdaki REST API işlemini kullanır:

Kod örnekleri

Bu makaledeki (GitHub) kod örneklerini görüntüleyin:

İstemci kitaplığı kaynakları