您可能想检查您是如何上传文件的。我在尝试从 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);
};