BodyParser анализирует данные вместо многостороннего подключения в node.js

Я пытаюсь загрузить файл, используя 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 не может анализировать данные, состоящие из нескольких частей. но я не знаю, как я могу использовать составное промежуточное ПО для анализа данных, состоящих из нескольких частей.


person Ilesh Patel    schedule 03.05.2015    source источник
comment
Каков сценарий? У вас есть составной запрос, содержащий объекты json? Почему вы используете 2 парсера?   -  person Yaki Klein    schedule 03.05.2015


Ответы (3)


Вы можете использовать модуль 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');
  });
});
person Kevin    schedule 03.05.2015

Используйте либо bodyParser, либо connect-multiparty для разбора запроса.
Оба не могут быть использованы одновременно. Вы можете анализировать json с помощью connect-multiparty, чем зачем использовать bodyParser, но bodyParser не может анализировать составные формы, поэтому нам нужно использовать другие парсеры, такие как connect-multparty.
см. эту ссылку.

person KlwntSingh    schedule 03.05.2015
comment
после использования только connect-multiparty теперь он также перестает анализировать данные json - person Ilesh Patel; 03.05.2015
comment
@llesh Patel, как ты получаешь доступ к своим параметрам req? - person KlwntSingh; 03.05.2015
comment
@llesh Patel см. ссылку, он обращается к объекту json с помощью req.body - person KlwntSingh; 03.05.2015
comment
Я не уверен, как я могу использовать его для анализа данных. Можете ли вы привести мне пример для этого, если у вас есть? - person Ilesh Patel; 03.05.2015
comment
enctype=multipart/form-data в форме важно - person KlwntSingh; 03.05.2015

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");
});
person KlwntSingh    schedule 03.05.2015