ошибка объекта слишком велика с 2 входными файлами в узле формы js - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть форма, в которой есть два входных файла, а затем текстовые поля.

, когда я делаю запрос к моему API, он выдает мне эту ошибку:

ОШИБКА: 413 сущности слишком велики, хотя входной файл 2 меньше 1 МБ.

тогдакогда я пытаюсь загрузить другую форму, в которой есть один входной файл, запрос возвращает 200 ..

<form id="form-addAccount" autocomplete="off">
  <div class="form-group">
    <label>Image</label>
    <input type="file" class="form-control" name="imageUrl">
  </div>
  <div class="form-group">
    <label>Name</label>
    <input type="text" class="form-control" name="name">
  </div>
  <div class="form-group">
    <label>File</label>
    <input type="file" class="form-control" name="fileUrl">
  </div>
</form>

, так выглядит моя форма ... с двумя входными файлами в форме.

и это структура моего запроса API.который возвращает статус 413

    var express = require('express');
    var router = express.Router();
    var request = require('request');
    var multer = require('multer');
    var upload = multer();

    router.post('/accounts/add', upload.any(), function (req, res) {
      var body = req.body;
      var file = req.files;


    if (!file) {
        formData = {};

      } else {
        formData = {
          image: {
            value: file[0].buffer,
            options:{
              filename: file[0].originalname,
              contentType: file[0].mimetype
            }
          },
          files: {
            value: file[1].buffer,
            options:{
              filename: file[1].originalname,
              contentType: file[1].mimetype
            }
          }
        }
      }
      console.log(_.extend(formData, body))

if i comment this part below, the console returns the data i imputed from my form.
but when i removed the comment it returns the error..
      request({
        uri: process.env.BASE_URL + '/api/accounts/add',
        method: 'POST',
        form:_.extend(formData, body),
      }, function (error, response, body) {
        if (!error && response.statusCode == 201) {  
          res.status(response.statusCode)
          .send(body);
        } else {
          res.status(response.statusCode)
          .send(body);
        }
      });
    });

, то есть моя структура для загрузки одного входного файла, которая возвращает статус 200

router.post('/image/add', upload.single('image-0'), function (req, res) {
  var file = req.file;
  var body = req.body;


  if (!file) {
    formData = {};
  } else {
    formData = {
      image: {
        value: file.buffer,
        options:{
          filename: file.originalname,
          contentType: file.mimetype
        }
      }
    }
  }
  console.log(_.extend(formData, body))
  request({
    uri: process.env.BASE_URL + '/api/image/add',
    method: 'POST',
    formData: _.extend(formData, body),
  }, function (error, response, body) {
    if (!error && response.statusCode == 201) {  
      res.status(response.statusCode)
      .send(body);
    } else {
      res.status(response.statusCode)
      .send(body);
    }
  });
});

, и я даже пытался увеличить ограничение моего анализатора тела до 50 МБ,в моем app.js

var bodyParser = require('body-parser');
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true }));
...