我尝试使用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'未定义",因为显然文件未定义。
答案 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请求时,请记住提供而不是内容类型数据。