我使用下面的简单代码来检索存储在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);
谢谢!感谢您的帮助!
答案 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);
};