NodeJS на стороне сервера FormData - PullRequest
0 голосов
/ 20 июня 2019

Я разрабатываю веб-приложение, используя серверную часть nodejs.Я пытаюсь отправить pdf файлы с клиента на сервер.

Клиент:

var files = new FormData();
var count = 0;
$('#tableSlideId tr').each(function() {

    var inputForm = $(this).find("th:first").children();
    file = inputForm[0].files[0];
    files.append((count++).toString(),file);

});

$.ajax({
    type: "POST",
    url: "/sendFiles",
    data: files,
    contentType: false,
    processData: false,

}).done(function(err){

    var text ="";
    if(err) {

        text = "Upload FAILED! Retry ...";

    } else {

        text = "Upload SUCCES!";

    }

    alert(text);



});

Я думаю, что на стороне клиента все в порядке, если я использую этот цикл:

for(var p of files)
  console.log(p);

Я правильно визуализирую все элементы, которые хочу отправить на сервер.

Сервер:

app.post('/sendFiles', function(req,res) {

    console.log("--->",req.body);
    res.end();

});

Сейчас на сервере я не знаю, как визуализировать данные, которыеЯ отправляю, потому что req.body пусто.

Не знаю, правильный ли это путь, но моя цель - загрузить некоторые pdf-файлы из клиента, отправить их на сервер и после сохранить вmySql dmbs.Спасибо.

1 Ответ

0 голосов
/ 20 июня 2019

Использовать Экспресс-модуль . установить «express-formidable» с помощью команды

npm install express-formidable --save

простой пример следующий из github


const express = require('express');
const formidable = require('express-formidable');

var app = express();

app.use(formidable());

app.post('/upload', (req, res) => {
  //req.fields contains non-file fields 
  //req.files contains files 
  console.log(req.fields);
  console.log(req.files);
});

Надеюсь, это поможет!

Редактировать, с здесь -

app.post('/submit-form', (req, res) => {
  new formidable.IncomingForm().parse(req, (err, fields, files) => {
    if (err) {
      console.error('Error', err)
      throw err
    }
    console.log('Fields', fields)
    console.log('Files', files)
    files.map(file => {
      console.log(file)
    })
  })
})
...