当前位置: 首页 > 面试题库 >

如何使用nodeJS下载保存在gridFS中的文件

孙玺
2023-03-14
问题内容

我需要从GridFS下载简历,以下是为此目的编写的代码ive,但这似乎并没有给我提供下载的物理文件,而是用于读取内容的。如何下载文件?

exports.getFileById = function(req, res){
var conn = mongoose.connection;
var gfs = Grid(conn.db, mongoose.mongo);
var id = req.params.ID;
gfs.exist({_id: id,root: 'resume'}, function (err, found) {
    if (err) return handleError(err);
    if (!found)
        return res.send('Error on the database looking for the file.');
    gfs.createReadStream({_id: id,root: 'resume'}).pipe(res);
});
};

问题答案:

希望这可以帮助!

exports.getFileById = function(req, res){
var role = req.session.user.role;
var conn = mongoose.connection;
var gfs = Grid(conn.db, mongoose.mongo);
gfs.findOne({ _id: req.params.ID, root: 'resume' }, function (err, file) {
    if (err) {
        return res.status(400).send(err);
    }
    else if (!file) {
        return res.status(404).send('Error on the database looking for the file.');
    }

    res.set('Content-Type', file.contentType);
    res.set('Content-Disposition', 'attachment; filename="' + file.filename + '"');

    var readstream = gfs.createReadStream({
      _id: req.params.ID,
      root: 'resume'
    });

    readstream.on("error", function(err) { 
        res.end();
    });
    readstream.pipe(res);
  });
};


 类似资料:
  • 问题内容: http://www.example.com/information.asp我需要获取一个在线文件(例如),并将其保存到目录中。我知道有几种方法可以逐行捕获和读取在线文件(URL),但是有没有一种方法可以使用Java下载和保存文件? 问题答案: 可以使用 Java NIO : 使用是可能不是一个简单的循环从源信道的读取和写入这个频道有效得多。许多操作系统可以直接将字节从源通道传输到文件

  • 有一个联机文件(如)我需要抓取并保存到目录中。我知道有几种方法来抓取和读取在线文件(URL),逐行,但有没有一种方法只是下载和保存文件使用Java?

  • 问题内容: 我想从互联网上下载一个zip文件,然后将其解压缩到内存中而不保存到临时文件中。我怎样才能做到这一点? 这是我尝试过的: [编辑]就像我建议的那样,我尝试使用adm-zip库,但仍然无法完成这项工作: 问题答案: 您需要一个可以处理缓冲区的库。最新版本将: 我的解决方案使用该方法,因为它返回Buffer块。 码: 这个想法是创建一个缓冲区数组,并在最后将它们连接成一个新的缓冲区。这是因为

  • 我正在使用一个spring boot api,它可以接收非常大的对象,并尝试将其保存在MongoDB数据库中。因此,程序有时会抛出下一个错误: 我读到MongoDB只允许16MB以下大小的对象,这对我的系统非常不方便,因为一个对象可以很容易地超过这个差距。为了解决这个问题,我读过GridFS,一种允许超过16MB文件差距的技术。 现在,我试图在系统中实现GridFS,但我只看到了使用文件保存在数据

  • 问题内容: 我经营一个在nodeJS + mongoDB后端运行的网站。现在,我正在实现一个系统来存储一些需要存储在数据库中的图标(小的图像文件)。 据我了解,不使用GridFS更有意义,因为它似乎是为大文件或大量文件量身定制的。由于我需要保存的每个文件都将在BSON最大文件大小以下,因此我应该能够将它们直接保存到常规文档中。 我有两个问题: 1)我的推理正确吗?与GridFS相比,可以将图像文件

  • 我已经尝试了。所有的失败都表明协议必须是HTTP或HTTPS。 Node有可用的FTP客户端(在npmjs上可用)。但是,根据他们的文档,他们需要创建一个到FTP服务器的连接,更改目录,然后下载它。 有什么简单的解决方法吗?