【发布时间】:2019-05-10 05:03:39
【问题描述】:
我有一个 API 路由代理文件从浏览器/客户端上传到 AWS S3。
此 API 路由会在文件上传时尝试对文件进行流式传输,以避免在服务器内存中缓冲文件的全部内容。
但是,该路由还尝试计算文件正文的 MD5 校验和。当文件的每个部分都被分块时,hash.update() 方法会被调用。
http://nodejs.org/api/crypto.html#crypto_hash_update_data_input_encoding
var crypto = require('crypto');
var hash = crypto.createHash('md5');
function write (chunk) {
// invoked many times as file is uploaded
hash.update(chunk);
}
function done() {
// will hash buffer all chunks in memory at this point?
hash.digest('hex');
}
Hash 实例是否会缓冲文件的所有内容以执行哈希计算(从而破坏避免在内存中缓冲整个文件内容的目标)?或者可以增量计算 MD5 哈希,而无需整个输入可用于执行计算?
【问题讨论】:
标签: node.js hash stream cryptography md5