gridfs-stream createReadStream不返回可读数据

时间:2015-03-13 04:45:12

标签: contenttype gridfs-stream

我使用下面的简单代码来检索存储在mongodb中的文件。该文件已下载,但不是PDF格式。在编写文件时,我已将content_type中的grid-fs api设置为application/pdf,我看到Mongo中存在该文件。下载的文件仅为BigBangTheory,而非BigBangTheory.pdf。其他格式例如text / html有同样的问题。

res.set('Content-Type', 'application/pdf');
gfs.createReadStream({ filename: 'BigBangTheory.pdf' }).pipe(res);

谢谢!感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可能想查看您上传文件的方式。我有一个类似的问题试图从gridfs-stream下载pdf文件,但该文件是不可读的。我发现作为上传的一部分,表单部分数据是作为请求的一部分将信息附加到文档的头部和脚部。我的解决方案是使用busboy来管理表单部分上传:

var Busboy = require("busboy");
exports.create = function(req, res, next) {

    var busboy = new Busboy({ headers : req.headers });

    busboy.on("file", function(fieldname, file, filename, encoding, mimetype) {

        var writeStream = gfs.createWriteStream({ filename : filename, contentType : mimetype, metadata : { account : req.user.parameters["account_id"] } });

        writeStream.on('close', function(file) {
            res.json({ _id : file._id, filename : filename, metadata : { account : req.user.parameters["account_id"], uploaded : new Date() } });
        });

        writeStream.on('error', function(err) {
            console.log(err);
        });

        file.pipe(writeStream);
    });
    req.pipe(busboy);
};