使用connect-multiparty和body-parser清空req.files

时间:2017-04-27 16:14:46

标签: node.js express multipartform-data body-parser

我正在尝试在我的api上使用connect-multiparty上传文件,但我无法使其有效。

这里是我的代码(样本,因为我的api有很多工作路线):

var express             = require('express');
var bodyParser          = require('body-parser');
var multipart           = require('connect-multiparty');
var app                 = express();
var multipartMiddleware = multipart({ uploadDir: './imagesPath' });

// Define middleware
app.use(bodyParser.urlencoded({ extended: true })); // Support encoded bodies
app.use(bodyParser.json());                         // Support json encoded bodies

var router = express.Router();                      // Get an instance of the express Router

router.post('/testFileUpload', multipartMiddleware, function(req, res) {
    console.log(req.body, req.files);

    // Some other code
});

当我尝试上传文件时,req.bodyreq.files都为空{}

我知道Body-Parser不再支持multipart/form-data了,所以我试图找到一种方法将其用于另一个包但到目前为止没有成功。

我尝试过使用busboyconnect-busboymulterformidableexpress-formidableexpress-fileupload,但每次都req.filesundefined,所以我觉得我通过让connect-multiparty为空而在req.files取得了一些进展。

我见过一些类似问题的主题,例如this onethis onethis one,但不幸的是,没有人帮助过我。

客户端我正在使用Advanced REST ClientPostman

任何想法我做错了什么?

2 个答案:

答案 0 :(得分:1)

对于遇到此问题的人,我发现删除Postman上的Content-Type标题值为" application / javascript"为我工作。我没有注意到整个时间,而我尝试了与OP相同的不同包装。

答案 1 :(得分:-1)

在html的标记表单中放入enctype =“ multipart / form-data”