multer req.file未定义

时间:2015-11-20 14:46:33

标签: javascript node.js multer

我尝试使用multer模块在我的节点js服务器上传文件,但由于某些原因,上传的文件总是未定义的。我使用这里的文档https://github.com/expressjs/multer编写了我的代码,其中包含一个单个文件的简单示例。

路由器:

var multerMiddleware = multer({"dest":"tmp/"});
var slidController = require('./../controllers/slid.controllers.js');

router.route('/slids')
.post(multerMiddleware.single('file'),slidController.create);

控制器:

SlidController.create = function(request,response) {
var id = Utils.generateUUID();
var fileName = Utils.getNewFileName(id,request.file.originalname);
var type = Utils.getFileType(request.file.mimetype);
var title = request.file.originalname;
//more code not relevant here

我使用邮递员发送一个帖子请求,其中包含与该键"文件"相关联的图像,但我总是得到" TypeError:无法读取属性' originalname'未定义",因为显然文件未定义。

2 个答案:

答案 0 :(得分:1)

尝试在multer之前添加body-parser:

var bodyParser = require('body-parser');
var multer = require('multer');

app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());

//Multer config here ..

您的问题也可能发生,因为您在发送文件时没有将Content-Type标题设置为'multipart/form-data'

或者因为表单中没有字段file

答案 1 :(得分:0)

当您运行curl请求时,请记住提供而不是内容类型数据。