是否可以仅下载附加Blob的特定部分?

时间:2019-03-24 06:17:49

标签: node.js azure azure-storage

我将音频文件上传到我的azure blob,我想知道是否可以仅下载我想要的音频部分吗? 顺便说一下,我正在使用nodeJs
谢谢!

1 个答案:

答案 0 :(得分:1)

  

我将音频文件上传到我的azure blob,我想知道是否   可以只下载我想要的音频部分吗?

是的,当然可以下载Blob的一部分。 Azure Blob支持读取一定范围的字节。例如,假设您只想从文件下载前1KB数据。这是您下载数据的方式:

import azure from 'azure-storage';
const ms = require('memory-streams');

const chunkStart = 0;
const chunkEnd = 1023;
const connectionString = 'your-azure-storage-connection-string';
const blobService = azure.createBlobService(connectionString);

const writableStream = new ms.WritableStream({
  highWaterMark: (chunk.end - chunk.start) * 2,
  writableHighWaterMark: (chunk.end - chunk.start) * 2,
});

const requestOptions = {
  rangeStart: chunkStart,
  rangeEnd: chunkEnd
};

blobService.getBlobToStream('container-name', 'blob-name', writableStream, requestOptions, (error, result, response) => {
  if (error) {
    console.log('Error occurred while downloading chunk!');
  } else {
    const dataBuffer = writableStream.toBuffer();
    console.log('Blob chunk downloaded!');
  }
});

考虑到您提到要存储音频文件,请注意,您不能指示Azure存储下载音频的“ x”持续时间(例如,下载音频的前30秒),因为Azure存储会将所有Blob视为字节集合,不知道该文件是音频文件还是其他文件。