乌鱼 req.file 未定义

multer req.file is undefined

我尝试使用 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

我使用 postman 发送一个 post 请求,其中包含与密钥 "file" 关联的图像,但我仍然总是收到 "TypeError: Cannot read property 'originalname' of undefined",因为显然文件是未定义。

尝试在 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 header 设置为 'multipart/form-data'

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

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