0

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

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

谢谢!我感谢您的帮助!

4

1 回答 1

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);
};
于 2015-06-29T14:25:46.857 回答