FormData 服务器端 NodeJS
FormData server side NodeJS
我正在使用 nodejs 服务器端开发 Web 应用程序。我正在尝试将 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 中。
谢谢。
使用express-formidable模块。通过 运行 命令
安装 '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);
});
希望对您有所帮助!
编辑,来自here -
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)
})
})
})
我认为您需要一些中间件来接受服务器端的多部分表单数据。 Multer 是个不错的选择。
您可以使用
var multer = require('multer')
var upload = multer({ dest: 'uploads/' })
然后更新您的服务器端以处理上传:
app.post('/sendFiles', upload.array('files', maxCount), function(req,res)
我正在使用 nodejs 服务器端开发 Web 应用程序。我正在尝试将 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 中。 谢谢。
使用express-formidable模块。通过 运行 命令
安装 '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);
});
希望对您有所帮助!
编辑,来自here -
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)
})
})
})
我认为您需要一些中间件来接受服务器端的多部分表单数据。 Multer 是个不错的选择。
您可以使用
var multer = require('multer')
var upload = multer({ dest: 'uploads/' })
然后更新您的服务器端以处理上传:
app.post('/sendFiles', upload.array('files', maxCount), function(req,res)