NodeJS - Огромный лимит файлов 200 МБ и сбой - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть сервер nodejs:

var http = require('http');
var formidable = require('formidable');
var fs = require('fs');
http.createServer(function (req, res) {
  if (req.url == '/fileupload') {
    console.log(req.rawHeaders)
    var form = new formidable.IncomingForm();
    form.parse(req, function (err, fields, files) {
      if (err) throw err;
      var oldpath = files.file.path
      var newpath = 'C:/VSI/' + files.file.name;
      fs.rename(oldpath, newpath, function (err) {
        //if (err) throw err;
        //res.write('File uploaded and moved!');
        if (err) {
          res.write(JSON.stringify({
            success: false,
            message: 'error happend'
          })
          );
          res.end()
          throw err;
        }

        res.write(JSON.stringify({
          success: true,
          message: 'Successfully Uploaded'
        })
        );
        res.end();
      });
    });
  } else {
    console.log(req.rawHeaders)
    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
    res.write('<input type="file" name="filetoupload"><br>');
    res.write('<input type="submit">');
    res.write('</form>');
    return res.end();
  }
}).listen(8080, () => {
  console.log('server running')
}).on("error", () => console.log("error happend"));

и я получаю

if (err) throw err;
               ^

Error: maxFileSize exceeded, received 209715683 bytes of file data

Как я могу загрузить более 200 МБ с огромным?

Как правильно обрабатывать исключения и почему«on error» on («error», () =>) событие не работает "?

Я пробовал Multer, и у него нет ограничения в 200 МБ, и он работает нормально.

1 Ответ

2 голосов
/ 08 апреля 2019

Просто прочитайте документацию: https://www.npmjs.com/package/formidable

Максимальный размер по умолчанию составляет 200 МБ, измените его на (например, 300 МБ):

form.maxFileSize = 300 * 1024 * 1024;

enter image description here

...