如何从节点 js 或 javascript 中的流中获取文件的哈希或校验和



我正在尝试从服务器获取文件的校验和或哈希值,而无需将整个文件下载到我的服务器或将其写入我的磁盘,例如从服务器读取数据然后获取哈希值。

法典

var download = function (url, dest, callback) {
request.get(url)
.on('error', function (err) { console.log(err) })
.pipe(fs.createWriteStream(dest))
.on('close', callback);
};
final_list.forEach(function (str) {
var filename = str.split('/').pop();
console.log('Downloading ' + filename);
download(str, filename, function () { console.log('Finished Downloading' + "" + filename) });
});

散 列

function generateChecksum(str, algorithm, encoding) {
return crypto
.createHash(algorithm || 'md5')
.update(str, 'utf8')
.digest(encoding || 'hex');
}

来自 Node 加密模块的哈希对象是可写流。你可以直接通过管道连接到它们,如下所示:

request.get(url)
.pipe(crypto.createHash('md5'))
.on('readable', function () {
callback(null, this.read());
});

(错误处理留给读者作为练习,因为在 Node 中使用流进行错误处理绝对是最糟糕的。

最新更新