使用post方法表达js图像上传和文本输入

时间:2016-09-01 07:57:05

标签: node.js express

我有以下代码用于上传图片和处理文字输入。但两者都没有合作 *图片上传正常,但我无法获得文字字段值*

var express = require('express');
var multer	=	require('multer');
var mime    =   require('mime');
var app = express();
var bodyParser =	require("body-parser");
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

var storage	=	multer.diskStorage({
  destination: function (req, file, callback) {
    callback(null, './uploads');
  },
  filename: function (req, file, callback) {
    callback(null, file.fieldname + '-' + Date.now() + '.' + mime.extension(file.mimetype));
  }
});
var upload = multer({ storage : storage }).array('userPic');

app.get('/completeForm.html', function(req, res){
	res.sendFile(__dirname + '/' + 'completeForm.html')
});

app.post("/postFormAct", function (req, res, next) {
	console.log(req.body.user); // Here i getting undefined
	console.log(req.body.email);// Here i getting undefined
	
	upload(req,res,function(err) {
		console.log(req.files); // Here i getting proper output and image also uploading to concern folder
	});
	
});

app.listen(3000);

下面给出的HTML代码....请帮助我某人

<form method="post" action="/postFormAct" enctype="multipart/form-data">
    <input type="text" name="user"><br>
    <input type="text" name="email"><br>
	<input type="file" name="userPic"><br>
    <input type="submit" value="Submit">
</form>

2 个答案:

答案 0 :(得分:2)

刚刚放

console.log(req.body.user);
console.log(req.body.email);

在你的上传功能里面:-)我觉得这个功能也可以起作用: - )

答案 1 :(得分:0)

那是因为在multipart/form-data路由处理程序之前没有调用/postFormAct解析中间件。

您设置了两个解析中间件,但没有一个解析此multipart/form-data内容类型。

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

Multer这样做,因此您可以在req.body.user中间件之后访问处理程序中的req.body.emailupload变量。