使用multer而不是busboy-bodyparser来解析请求体。multer也支持将文件上传到GridFS,与GridFsStorage兼容。
示例代码如下:
const multer = require('multer'); const GridFsStorage = require('multer-gridfs-storage'); const mongoose = require('mongoose'); const path = require('path');
// 创建Gridfs存储对象 const storage = new GridFsStorage({ url: 'mongodb://localhost:27017/myDatabase', file: (req, file) => { var filename = file.originalname return { filename: filename, }; } });
//创建multer解析器 const upload = multer({ storage: storage, limits: { fileSize: 1000000 }, fileFilter: function (req, file, cb) { checkFileType(file, cb); } }).single('myUploadField');
function checkFileType(file, cb) { // 允许上传的文件扩展名 const filetypes = /jpeg|jpg|png|gif/; // 检查扩展名 const extname = filetypes.test(path.extname(file.originalname).toLowerCase()); // 检查后缀名 const mimetype = filetypes.test(file.mimetype); if (mimetype && extname) { return cb(null, true); } else { cb('错误:只允许上传图片!'); } }
//上传文件示例 app.post("/upload", function (req, res) { upload(req, res, function (err) { if (err) { res.status(400).send(err); } else { // 文件已上传,返回成功信息 res.send("上传成功!"); } }); });
上一篇:不扫描评估笔试
下一篇:Busboy丢失文件数据