node.js - 如何在不下载存储在节点 js 中 Azure 存储中的 blob 块的情况下获取 SHA1 哈希?
问题描述
我想使用 sha-1 哈希进行文件验证,我需要 sha-1 哈希值而不从 azure storageblob 下载块。请帮助我提供代码示例(Node js)。
//I am using this method to upload BlockBlob (@azure/storage-blob npm)
blockBlobClient.commitBlockList(arr).then(async (res)=>{
console.log('res',res);
}).
catch((err)=>console.log(err))
});
解决方案
Azure Blob 存储在放置 Blob 时自动将 Blob 的 MD5 哈希(不是 SHA1)存储为属性。您可以使用您正在使用的同一 blob SDK (@azure/storage-blob) 检索 blob 属性。不幸的是,如果您特别需要的话,如果不下载/流式传输 blob,则没有对 SHA1 哈希的开箱即用支持。如果 MD5 适合您,那么下面的代码片段将在不下载 blob 的情况下获得它。
const props = await blockBlobClient.getProperties();
const md5 = props.contentMD5.toString('base64');
注意:当您上传 blob(文件或字节)时,存储会计算 MD5 哈希。但是由于这里是通过分块上传的,因此存储不会计算完整 blob 的 MD5 哈希,因为每个块都是单独写入的。
推荐阅读
- html - 使用纯 CSS 在单击时创建多级下拉菜单
- python - 在 Pandas 中,您如何仅使用 True 系列布尔值对行求和
- javascript - 在 jquery 对话框中显示 php/mysql 抓取的图像
- android - 将非常大的文本设置为 EditText
- laravel - 如何使用 laravel 获取特定用户的购物车物品?
- sage - SageMath:确定字段中可约多项式数量的最佳方法?
- sql - 使用 IBM 的 Db2 添加外键
- java - 使用 Apache POI 从 .doc 中提取超链接
- react-hooks - 如何获取此元素的 id 以从反应钩子中的数组中删除?
- typescript - 扩展“通用”TypeScript 接口