首页 > 解决方案 > 如何在不下载存储在节点 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))
          });

标签: node.jsazureazure-blob-storage

解决方案


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 哈希,因为每个块都是单独写入的。


推荐阅读