javascript - 使用纯 JavaScript 和 Azure-Storage-Js 下载 Azure 存储 Blob
问题描述
我正在尝试仅使用纯 Javascript 和 SDK 来执行此操作。我没有使用 Node.js。我正在将我的应用程序从 SDK azure-storage-js-v10 的 v2 转换为 v10
azure-storage.blob.js 捆绑文件与UMD标准兼容,如果没有找到模块系统,将导出以下全局变量:azblob
我的代码在这里:
const serviceURL = new azblob.ServiceURL(`https://${account}.blob.core.windows.net${accountSas}`, pipeline);
const containerName = "container";
const containerURL = azblob.ContainerURL.fromServiceURL(serviceURL, containerName);
const blobURL = azblob.BlobURL.fromContainerURL(containerURL, blobName);
const downloadBlobResponse = await blobURL.download(azblob.Aborter.none, 0);
downloadBlobResponse 看起来像这样: downloadBlobResponse
使用 v10,如何将 downloadBlobResponse 转换为新的 blob,以便在FileSaver saveAs() 函数中使用?
在azure-storage-js-v2 中,此代码适用于较小的文件:
let readStream = blobService.createReadStream(containerName, blobName, (err, res) => {
if (error) {
// Handle read blob error
}
});
// Use event listener to receive data
readStream.on('data', data => {
// Uint8Array retrieved
// Convert the array back into a blob
var newBlob = new Blob([new Uint8Array(data)]);
// Saves file to the user's downloads directory
saveAs(newBlob, blobName); // FileSaver.js
});
我已经尽一切努力让 v10 工作,任何帮助将不胜感激。
谢谢,
解决方案
你需要通过 await blobBody 来获取 body。
downloadBlobResponse = await blobURL.download(azblob.Aborter.none, 0);
// data is a browser Blob type
const data = await downloadBlobResponse.blobBody;
推荐阅读
- vba - 如何在文本框中显示列表框结果?
- python - 如何运行其他模块?
- python - 如何修复'NotImplementedError:
' 在烧瓶中(SQLAlchemy,Flask-RBAC) - javascript - 如何使用 HTML 自动访问文件资源管理器
- javascript - 未触发反应“空间”新闻处理程序
- python - 如何使用python提取JSON格式数据中的关键字?
- c++ - 此代码中是否违反了严格的别名规则?
- python - 用 For-Loop 中的数据填充 Dataframe
- node.js - 是否有可能使用您的不和谐机器人/使用某个机器人命令将某人列入最高黑名单?
- javascript - 不和谐.js | 聊天记录 (txt) 已保存