如何通过 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 的列表?

如何在 Azure 的子容器中获取 Blob 列表

ML.NET机器学习API容器化与Azure DevOps实践:RESTful API

如何使用REST API将文件存储卷安装到azure容器实例