如何使用azure函数在blob触发器上生成大blob文件的校验和?

问题描述

我想为blob中上传的大文件(大约1 GB)创建校验和(MD5)。我正在使用Blob触发天蓝色函数。任何方法。目前,我的代码是这个

    const {
    exec
   } = require('child_process');

function execShellCommand(cmd) {
    return new Promise((resolve,reject) => {
     exec(cmd,(error,stdout,stderr) => {
      if (error) {
       console.log(error);
      }
      resolve(stdout? stdout : stderr);
     });
    });
   }

module.exports = async function (context,myBlob) {
    context.log(myBlob.toString());
    context.log(context.bindingData.blobTrigger);
    const data = myBlob.toString();
    const output = await execShellCommand(`echo -n ${data} | md5sum`);
    context.log(output);
    context.bindings.outputBlob = output;
};

但这不会处理大文件

解决方法

您不必自己计算MD5。默认情况下,Azure Blob存储会自动为您计算。

将通过此属性向您提供:

for(vote in AllVotes){
  voters_+ <- unlist(AllVotes[[i]]$votes$`+`$groups)
  voters_- <- unlist(AllVotes[[i]]$votes$`-`$groups)
  voters_0 <- unlist(AllVotes[[i]]$votes$`0`$groups)
  
  meps[,vote] <-ifelse(meps$mepid %in% voters_+,"+",ifelse(meps$mepid %in% voters_-,"-",ifelse(meps$mepid %in% voters_0,"0",NA)))
}