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 エンコードされて返されます (ダイジェスト メソッドでバイナリまたは 16 進数を指定することもできます)。

更新わかりましたので、そのメールパーサーを見て、ヘルプに記載されていることに気付きました。

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

checksum プロパティの記述に注意してください。

ここで 283 行目を見てください: https://github.com/andris9/mailparser/blob/master/lib/mailparser.js

そのチェックサムは、必要な MD5 です。

したがって、attachment.checksum を実行するだけで完了です

于 2012-06-13T17:54:40.627 に答える