【问题标题】:How to get blob data from azure container in chunks through an API call?如何通过 API 调用从 azure 容器中获取 blob 数据?
【发布时间】:2021-08-16 10:50:41
【问题描述】:

我正在尝试通过 API 调用从 azure blob 容器中检索数据,它工作正常,但对于 20 或 30 MB 的文件,它需要将近 3-4 分钟才能从 API 获得响应,这从用户的角度来看并不好,有没有办法以块的形式从 azure 获取数据,以便我们可以向用户显示渐进式数据?下面是我用来获取数据的节点js代码sn-p:

var request = require('request').defaults({ encoding: null });
const fileUrl = "File Url";
request.get(fileUrl, function (error, response, body) {
    if (!error && response.statusCode == 200) {
        const image = body.toString('base64');
        res.status(200).json({ image })
    } else {
        res.status(400).json({})
    }
});

【问题讨论】:

  • 所以您正在寻找有关在下载时显示进度条的演示?
  • 不,我想显示我将从 azure 获得的分块数据,这样用户就会知道数据还没有完全加载,就像下面 URL 中显示的数据一样,最初它显示模糊数据,然后以完整的分辨率显示数据,当您通过站点的网络时,您会发现它正在以块的形式获取数据。 f.giorlando.org/2018/07/web-viewers-for-fmri
  • 请编辑您的问题并包含您目前编写的代码。
  • 添加代码请查看

标签: node.js azure rest get azure-blob-storage


【解决方案1】:

请求您的 Blob 的 Content-Length

blob 的大小(以字节为单位)。对于页 blob,此标头返回与 blob 一起存储的 x-ms-blob-content-length 标头的值。

Get the blob 使用 Range Headers:

范围可选。只返回指定范围内的 blob 字节。

第二种格式 bytes=startByte-endByte 可用于使用所有版本(2009-04-14 到最新版本)的请求,以及所有版本的存储模拟器服务。此范围将返回从偏移 startByte 到 endByte 的字节。例如,要指定包含 blob 前 512 个字节的范围,您可以传入以下任一标头:

范围:字节=0-511

【讨论】:

    猜你喜欢
    • 2022-08-05
    • 2020-09-03
    • 2021-02-06
    • 2022-11-06
    • 2020-09-05
    • 2021-03-19
    • 2021-10-08
    • 2020-06-25
    • 1970-01-01
    相关资源
    最近更新 更多