如何通过 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 数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Azure REST API 从管道中获取所有变量?
如何以编程方式获取 Azure AD 应用程序的 Graph API 权限指南?
如何从 Azure 容器中的 blob 中获取所有 URL 的列表?