javascript - 使用 GridFS 下载文件
问题描述
我设法将文件上传到我的 mongoDB 数据库,如下所示:
uploadFile(file, uid) {
var grid = require('gridfs-stream');
var mongoose = require('mongoose');
var fs = require('fs');
mongoose.connect(config.db, {useNewUrlParser: true},).catch(e => console.log(e));
var conn = mongoose.connection;
grid.mongo = mongoose.mongo;
const gfs = grid(conn.db);
const writeStream = gfs.createWriteStream({
filename: file.filename,
});
fs.createReadStream(file.path).pipe(writeStream);
writeStream.on('close', file => {
const {_id} = file;
console.log(`${_id} written to the db`);
return Account.findByIdAndUpdate(uid, {'employer.logo': _id}).then(r => console.log(r)).catch(e => console.log(e));
});
}
所以这导致了这个:
{
"_id": {
"$oid": "5bc9d28270e5375dfbfe17fd"
},
"employer": {
"logo": "5bd72702d5dfad7f0f9f8c08",
},
}
它还创建了一个fs.files
和fs.chunks
文档
{
"_id": {
"$oid": "5bd72702d5dfad7f0f9f8c08"
},
"filename": "6d6104894af7d98779430a7457ce3e4e",
"contentType": "binary/octet-stream",
"length": 17283,
"chunkSize": 261120,
"uploadDate": {
"$date": "2018-10-29T14:09:18.725Z"
},
"aliases": null,
"metadata": null,
"md5": "2e6afedd69510b1b526f1015c47065e2"
}
而这在fs.chunks
{
"_id": {
"$oid": "5bd72702d5dfad7f0f9f8c09"
},
"files_id": {
"$oid": "5bd72702d5dfad7f0f9f8c08"
},
"n": 0,
"data": "<Binary Data>"
}
所以我认为这里一切都很好。但现在我无法弄清楚如何阅读它。这就是我到目前为止所拥有的。
downloadFile: async id => {
var fs = require('fs');
fs.file.find(id).then(r => console.log(r)).catch(e => console.log(e));
}
我在互联网上看到过类似的东西,但现在找不到。知道这有什么问题吗?
解决方案
推荐阅读
- bash - Bash 中的逻辑运算符评估
- angular - How to separate Angular components (zonejs) from your application
- windows - Intellij is merging two folders with the same name
- php - Json output array to php variable
- readonly - UIPATH - 如何检查 Excel 文件是否处于“只读”模式
- .net - Where Should References to Swagger be Removed in .Net 5 to Allow testing of APIs in localhost
- python - 从多行获取预测 - 决策树回归器
- sql - 选择最新日期以上的所有值
- django - python manage.py runserver 显示了我开发的一个旧的 webapp 页面
- indexing - 如何动态汇总Excel中的列?