javascript Mongodb和Gridfs文件下载

e5nszbig  于 2023-01-08  发布在  Java
关注(0)|答案(1)|浏览(148)

我正在开发一个允许用户上传和下载文件的应用程序,目前的问题是我可以从MongoDB数据库中检索文件,并通过我的机器下载到本地,但我不能通过浏览器下载。
到目前为止我试过这样做

const conn = mongoose.createConnection(process.env.URL, {
    useNewUrlParser: true,
    useUnifiedTopology: true
})

const bucket = new GridFSBucket(conn, {bucketName: 'uploads'});

router.get('/download', (req, res) => {

    const files = bucket.openDownloadStreamByName('3987a162969935378c4f8cbe5d95bb46.svg').pipe(fs.createWriteStream('./3987a162969935378c4f8cbe5d95bb46.svg'))
    res.end()
})
bjp0bcyl

bjp0bcyl1#

我不认为问题出在mongoDB或Gridfs上,而是出在您如何处理文件流上。如果您希望在用户调用/GET /download时下载文件,您需要
使用-res.download(文件);例如

const conn = mongoose.createConnection(process.env.URL, {
  useNewUrlParser: true,
  useUnifiedTopology: true
})

const bucket = new GridFSBucket(conn, {
  bucketName: 'uploads'
});

router.get('/download', (req, res) => {

  const files = bucket.openDownloadStreamByName('3987a162969935378c4f8cbe5d95bb46.svg').pipe(fs.createWriteStream('./3987a162969935378c4f8cbe5d95bb46.svg'))
  res.download(files)
})

祝你好运!也访问这个Download a file from NodeJS Server using Express

相关问题