Javascript 使用expressjs的多部分表单数据发布方法
我试图将表单数据发布到我的express js服务器端。这是我的Javascript 使用expressjs的多部分表单数据发布方法,javascript,express,pug,multipartform-data,Javascript,Express,Pug,Multipartform Data,我试图将表单数据发布到我的express js服务器端。这是我的pug文件 form(action="/profile" method="post" enctype="multipart/form-data") input(type="file" accept="image/*" name="profileimage") input(type="text" name="username") input(type="submit" value="Upload") 之后,我尝试在服务器端js
pug
文件
form(action="/profile" method="post" enctype="multipart/form-data")
input(type="file" accept="image/*" name="profileimage")
input(type="text" name="username")
input(type="submit" value="Upload")
之后,我尝试在服务器端js中使用req.body
记录post数据,如下所示。这是我的profile.js
router.post('/', function (req, res) {
console.log('Body- ' + JSON.stringify(req.body));
});
这是我的结果
body-{}
如果我不使用
enctype=“multipart/form data”
发布,比如form(action=“/profile”method=“post”)
,我可以从控制台结果中获取发布数据。您需要使用中间件来处理多部分表单数据,我认为最著名的是multer
你可以在这里找到它:
要使用它:
var multer=require('multer')代码>
multer
构造函数中设置dest
参数来选择上载目录:var upload=multer({dest:'uploads/')代码>
router.post('/',上传,函数(req,res){
log('Body-'+JSON.stringify(req.Body));
});代码>
别忘了阅读他们github repo的文档。express强大的
模块最适合将post数据发送到服务器。
使用以下命令安装快速强大
npm安装快速强大
下面是一个示例代码示例
let express = require('express');
let app = express();
let formidable = require('express-formidable');
let path = require('path');
app.use(formidable({
encoding: 'utf-8',
uploadDir: path.join(__dirname, 'uploads'),
multiples: true,
keepExtensions:true// req.files to be arrays of files
}));
app.post('/uploads',function(req,res){
console.log('Files '+JSON.stringify(req.files));// contains data about file fields
console.log('Fields '+JSON.stringify(req.fields));//contains data about non-file fields
});
您必须安装
path
模块,此代码才能使用以下命令npm install path
在项目根目录中创建一个文件夹上载。所有与文件相关的数据都将在req.files
中,而非文件数据将在req.fields
中,我已经将其与ejs
模板引擎一起使用过,并且与pug
一样可以正常工作。单击了解有关express
复制的更多信息,以了解Thank@Atef的可能复制,但这会将数据分割为req.file和req.body。请问有没有一种方法可以将所有的表单数据整合在一起。在req.body中,这样我就可以将数据按原样发送到另一个api。@Vixson我也遇到了同样的情况,我建议使用强大的,因为它有一个更简单的处理程序,并且不分为req.file和req.body。它的大小也是multer的4倍,但仍然很轻