如何通过 API 调用从 azure 容器中获取 blob 数据?

Posted

技术标签:

【中文标题】如何通过 API 调用从 azure 容器中获取 blob 数据?【英文标题】:How to get blob data from azure container in chunks through an API call? 【发布时间】: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 请编辑您的问题并包含您目前编写的代码。 添加代码请查看 【参考方案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

【讨论】:

以上是关于如何通过 API 调用从 azure 容器中获取 blob 数据?的主要内容,如果未能解决你的问题,请参考以下文章