【发布时间】:2021-11-16 19:22:22
【问题描述】:
正如标题所说,如何使用 express 与来自 mongoDB(GridFsBucket) 的文件建立直接下载链接?
该文件应该可以从内存中下载,因为我不想将它临时保存在服务器上。
我有这个方法:
async function downloadFileFromDB(fileId) {
var gridfsbucket = new mongoose.mongo.GridFSBucket(mongoose.connection.db, {
chunkSizeBytes: 1024,
bucketName: 'filesBucket'
});
try {
const stream = gridfsbucket.openDownloadStream(fileId)
const fileBuffer = Buffer.from(stream)
return fileBuffer
} catch (err) {
stream.on('error', () => {
console.log("Some error occurred in download:" + error);
})
console.log(err);
}
}
还有这条路线:
router.get('/download-file', async (req,res) => {
const fileId = req.query.fileId
const ObjectFileId = new ObjectId(fileId)
const fileBuffer = await fileFacade.downloadFileFromDB(ObjectFileId)
res.download(fileBuffer)
})
但是 res.download 需要的是路径而不是缓冲区。同样,我不确定我是否可以直接从 openDownloadStream 方法制作缓冲区。
谁能帮忙?
【问题讨论】:
标签: node.js mongodb express gridfs