首页 > 解决方案 > 如何在 Node js 中散列下载流

问题描述

我想知道如何使用节点 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) });
            });

标签: javascriptnode.js

解决方案


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
    });
}


推荐阅读