3

我正在解析一封电子邮件,每当我点击附件时,我都想将附件上传到 S3。每当找到附件时,我都会得到附件的流。我想获取附件的 MD5sum,然后再次使用流将其上传到 S3。

无论如何,如果不先将流写入文件,计算 MD5,然后从文件中生成可读流并将流发送到 knox(这将是 3 次流读取),是否可以这样做?

parser.on("attachment", function(attachment){
    //Calculate MD5 sum
    var md5sum = '';
    s3client.putStream(attachment.stream, 'blah.jpeg', {
        'md5sum': md5sum
    }, function(err, res) {});
});
4

1 回答 1

3

我认为这应该工作?

var crypt = require("crypto")

function hashFile(attachment){
    var hash = crypt.createHash("md5")
        .update(attachment)
        .digest("base64");


    console.log(hash);
}

hashFile("some attachment blah");

您传入的附件获取的 MD5 散列并返回 base64 编码(您也可以在摘要方法中指定二进制或十六进制)

更新好的,所以我查看了那个邮件解析器,并注意到它在帮助中所说的内容:

https://github.com/andris9/mailparser#default-behavior

注意校验和属性的提及。

现在看这里的第 283 行:https ://github.com/andris9/mailparser/blob/master/lib/mailparser.js

该校验和是您想要的 MD5。

所以只需执行 attachment.checksum 即可完成

于 2012-06-13T17:54:40.627 回答