-1

我正在尝试使用 connect-multiparty 上传文件,下面的connect-multiparty 是我的 express.js 配置。

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

    //file upload configuration
    app.use(multipart({
            uploadDir: config.tmp
    }));

但是当我上传文件时,如果太长,它会给我的请求大小。我搜索了这个,发现我需要设置限制,所以我还设置了限制参数,如下所示:

app.use(bodyParser.json({limit:'50mb'}));

但在那之后我开始收到 Invalid json 错误。比我发现 bodyParser 无法解析多部分数据。但我不知道如何使用多部分中间件来解析多部分数据。

4

3 回答 3

1

您可以使用node-formidable 模块来处理多部分表单数据

var formidable = require('formidable');

app.post('/upload', function(req, res, next) {
  var form = new formidable.IncomingForm();
  form.parse(req, function(err, fields, files) {
      console.log(fields);
      console.log(files);
      res.send('done');
  });
});
于 2015-05-03T13:51:44.653 回答
0

使用bodyParserconnect-multiparty来解析请求。
两者不能同时使用。您可以使用 connect-multiparty 解析 json,而不是为什么使用 bodyParser 但 bodyParser 无法解析多部分表单,因此我们需要使用其他解析器,例如 connect-multparty。
看到这个链接

于 2015-05-03T14:39:58.273 回答
0

index.html 代码

<html><body>
<div id="main-content">
    <form action="upload" method="post" enctype="multipart/form-data">
         <input type="text" name="FirstName" ><br>
             <input type="text" name="LastName" ><br>
            <input type="submit">
            </div>
</div></body>
</html>

服务器.js

var express = require('express');
var app = express();
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();

app.use("/",  express.static(__dirname + '/client/'));

app.post('/upload', multipartMiddleware, function(req, resp) {
    console.log(req);
  console.log(req.body);
  // don't forget to delete all req.files when done
});

app.listen(3000,function(){
console.log("App Started on PORT 3000");
});
于 2015-05-03T15:39:53.987 回答