【问题标题】:Azure Blob Storage - upload file with progressAzure Blob 存储 - 上传有进度的文件
【发布时间】:2021-03-02 18:18:41
【问题描述】:

我有以下代码 - 将文件上传到 Azure-Blob-Storage 是很正常的,但是,当我上传文件而不是多次执行 onProgress 时,我只使用 file.size 执行(并且总是)一次值(因此它正在缓慢地发送)文件到天蓝色,但进度在完成后只执行一次。

    const requestOptions = this.mergeWithDefaultOptions(perRequestOptions);
    const client = this.getRequestClient(requestOptions);
    const containerClient = await client.getContainerClient(this.options.containerName);
    const blobClient = await containerClient.getBlockBlobClient(file.name);
    const uploadStatus = await blobClient.upload(file.buffer, file.size, {onProgress: progressCallBack});

我很想知道这个库的结果是否正常(对于从 azure 下载文件,相同的方法可以正常工作)。

【问题讨论】:

    标签: node.js progress-bar azure-storage


    【解决方案1】:

    根据我的测试,该方法是一种非并行上传方法,它只是向 Azure 存储服务器发送一个 Put Blob 请求。更多详情请参考here

    所以如果你想让onProgress被执行多次,我建议你使用uploadStream的方法。它使用Put Block 操作和Put Block List 操作进行上传。更多详情请参考here

    例如

    try {
        var creds = new StorageSharedKeyCredential(accountName, accountKey);
        var blobServiceClient = new BlobServiceClient(
          `https://${accountName}.blob.core.windows.net`,
          creds
        );
        var containerClient = blobServiceClient.getContainerClient("upload");
        var blob = containerClient.getBlockBlobClient(
          "spark-3.0.1-bin-hadoop3.2.tgz"
        );
    
        var maxConcurrency = 20; // max uploading concurrency
        var blockSize = 4 * 1024 * 1024; // the block size in the uploaded block blob
        var res = await blob.uploadStream(
          fs.createReadStream("d:/spark-3.0.1-bin-hadoop3.2.tgz", {
            highWaterMark: blockSize,
          }),
          blockSize,
          maxConcurrency,
          { onProgress: (ev) => console.log(ev) }
        );
        console.log(res._response.status);
      } catch (error) {
        console.log(error);
      }
    

    【讨论】:

    • 我是这么想的,但是我不明白为什么你甚至需要在一次执行的函数中使用onProgress。我将此设置为答案,因为它证实了我的想法。谢谢!
    • @Seti 既然它对您有用,请您接受它作为答案:meta.stackexchange.com/questions/5234/…
    猜你喜欢
    • 2017-04-08
    • 1970-01-01
    • 2015-06-16
    • 2021-03-24
    • 2016-12-07
    • 2017-01-24
    • 2017-08-19
    • 2012-07-28
    • 1970-01-01
    相关资源
    最近更新 更多