MD5签名是唯一标识一个文件的好办法,之前一直用fs.readFile()。
后来发现当文件太大的时候内存就吃不消了。所以改进了一下读取的方式,用fs.createReadStream(path)。
var fs = require('fs');
var crypto = require('crypto');
var path = '/target/file.data';
var start = new Date().getTime();
var md5sum = crypto.createHash('md5');
var stream = fs.createReadStream(path);
stream.on('data', function(chunk) {
md5sum.update(chunk);
});
stream.on('end', function() {
str = md5sum.digest('hex').toUpperCase();
console.log('文件:'+path+',MD5签名为:'+str+'.耗时:'+(new Date().getTime()-start)/1000.00+"秒");
});
本文介绍了一种针对大文件生成MD5签名的有效方法。通过使用Node.js的fs.createReadStream和crypto模块,避免了因一次性加载整个文件到内存而导致的性能问题。此方案适用于需要校验大文件完整性的场景。
173

被折叠的 条评论
为什么被折叠?



