javascript - 如何在 Node js 中对下载流进行哈希处理

标签 javascript node.js

我想知道如何使用node js对文件的下载流进行哈希

因为我想在存储到 mongo db 之前对文件进行哈希处理以避免重复,所以我顺便使用 mongo grid fs。 https://github.com/aheckmann/gridfs-stream

下载文件

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 getHash(dest, filename) {
  let crypto = require('crypto');
  let hash = crypto.createHash('sha256').setEncoding('hex');
  let fileHash = "";
  let filePath = `${dest}/${filename}`
  fs.createReadStream(filePath)
    .pipe(hash)
    .on('finish', function() {
      fileHash = hash.read();
      console.log(`Filehash calculated for ${filename} is ${fileHash}.`);
      // insert into mongo db here
    });
}

关于javascript - 如何在 Node js 中对下载流进行哈希处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58370696/

相关文章:

javascript - 控件加载事件

node.js - rabbitmq队列中消息过多,队列不会过期

javascript - 如何使用 Javascript 将具有相同名称的对象分组?

javascript - 如何修复错误 : listen EADDRINUSE while using NodeJS?

javascript - 什么时候应该在 Ember 中使用路由?

php - 如何防止用户使用每个 *.php?cat='

javascript - 停止固定背景图像在特定高度滚动

node.js - AWS Lambda 函数从不调用回调

node.js - 在我的测试中,使用 stub 函数未捕获事件

javascript - Cypress 自动重定向到新 URL