Node.js читает multipart / form-data POST - PullRequest
0 голосов
/ 23 мая 2019

Я передаю файл в node.js с помощью AJAX.файл передается в виде строки Base64, и я передаю его с помощью multipart / form-data.Часть AJAX работает безупречно, но мне нужно, чтобы указанная строка хранилась в переменной на стороне сервера, т.е. в Node.js.Теперь на PHP это было бы очень просто:

$someVar = $_POST["myBase64EncodedFile"];

Как я могу добиться именно этого, но с Node.js?Я должен использовать Node.js, и я не хочу, чтобы файл был сохранен в какой-либо временной папке, мне просто нужна строка в переменной.Есть идеи?Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

используйте огромные модули.

в экспрессе, вы можете использовать его следующим образом:

var formidable = require('formidable');
const form = new formidable.IncomingForm();
function handlerFormByEvent(req, res, next) {
  form
    .parse(req)
    .on('fileBegin', (name, file) => {
      console.time('start');
      console.log('name', name);
      file.path = `uploads/${file.name}`;
    })
    .on('progress', (accepted, total) => {
      console.log(`accept:%d,total:%d`, accepted, total);
    })
    .on('field', (name, field) => {
      console.log('field', name, field);
    })
    .on('file', (name, file) => {
      // handle file
      console.log('name', name);
      console.log(file.toJSON());
    })
    .on('aborted', error => {
      let message = error.message;
      res.render('error', { message, error });
    })
    .on('error', err => {
      console.error('Error', err);
      let message = err.message;
      res.status(err.status || 500);
      res.render('error', { message, error: err });
    })
    .on('end', () => {
      res.end('ok');
    });
}
0 голосов
/ 23 мая 2019

Просто используйте объект Request.body:

let someVar = req.body["myBase64EncodedFile"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...