以下是路由器代码:
router.route('/')
.post(validate(schema.storeLeaves), (req, res) => {
leavesCtrl.store(req, res);
});下面是将记录添加到数据库中的函数。上面的代码是调用下面的函数。
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, './uploads');
},
filename: function (req, file, callback) {
callback(null, file.fieldname + '-' + Date.now());
}
});
var upload = multer({ storage : storage}).single('document');
export function store(req, res) {
upload(req,res,function(err) {
if(err) {
return res.status(HttpStatus.INTERNAL_SERVER_ERROR).json({
error: err
})
}
res.end("File is uploaded");
const {leave_type, comments, date_from, date_to, blocked_dates} = req.body;
leaves.forge({
leave_type, comments, date_from, date_to, blocked_dates
}).save()
.then(leaves => res.json({
success: true,
data: leaves.toJSON()
})
)
.catch(err => res.status(HttpStatus.INTERNAL_SERVER_ERROR).json({
error: err
})
);
});
}没有错误,但也没有上传文件。记录正成功保存到数据库中。
发布于 2019-12-21 14:58:45
将Multer添加到应用程序的最简单方法是将其用作中间件。
试试这个:
const fs = require('fs-extra')
const multer = require('multer')
const storage = multer.diskStorage({
destination: function (req, file, callback) {
fs.mkdirSync('./uploads')
callback(null, './uploads');
},
filename: function (req, file, callback) {
callback(null, file.fieldname + '-' + Date.now());
}
});
const upload = multer({ storage: storage })
/* POST TEST Multer */
router.post('/', upload.single('file'), function (req, res, next) {
res.send(req.file.path);
});另外,作为一个干净的代码,不要向你的内部函数发送req和res。看看这个node.js best practices
https://stackoverflow.com/questions/59409509
复制相似问题