javascript - 如何在 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) });
});
解决方案
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
});
}
推荐阅读
- php - 将来自 mysql 查询的 json 响应填充到另一个文件中的 html 列表
- javascript - 如何管理对异步服务的可变调用次数
- android - 如何将 ResourceBundles 与 Android Studio 和 Gradle 一起使用?
- css - CSS 不能在 Firefox 上工作,但在 chrome 上工作
- python - Keras:逐元素操作:点积或内积,numpy.matmul 等效
- typescript - rxjs 在使用 HttpClient 时的困惑
- android - 自定义地标 MapKit
- java - 检查相机是否正在记录笔记本电脑屏幕
- sorting - Gremlin:如何选择()多个顶点到一个集合中,然后获取具有最高属性值的那个
- regex - 正则表达式 - 返回最高数字