我有以下代码:
import { Router } from 'express';
var multer = require('multer')
var upload = multer({dest: 'uploads/'})
router.post('/file/upload', upload.single('file'), function (req, res, next) {
return res.status(200).json({
'name' : 'here'
});
});
export default router;
我正在使用postman
上传文件。
请求类型:POST
标题:Content-Type : multipart/form-data
身体:file : path/filename.jpg
响应正常,但文件没有上传到上面指定的目录。
答案 0 :(得分:0)
响应正常,但文件没有上传到上面指定的目录。
这是因为在路由处理程序中,您为每个案例返回res.status(200)
。您没有检查上传中的错误。
要检查上传中的错误,您可以执行以下操作:
var multer = require('multer')
var upload = multer({dest: 'uploads/'}).single('file');
router.post('/file/upload', function (req, res, next) {
upload(req, res, function (err) {
if (err) {
throw err;
}
return res.status(200).json({
'name' : 'done'
});
console.log(req);
});
});
您将得到的错误是Error: Multipart: Boundary not found
。这是因为您在标题中设置了Content-Type : multipart/form-data
,但它缺少边界,用于分隔多部分请求正文的“多个部分”。
从标题中删除内容类型,它会在您发送请求时自动设置。