form中post的属性找不到
发布于 8 年前 作者 insisthzr 3086 次浏览 来自 问答
	<html>
    <head>
       		<title><%= title %></title>
        	<link rel="stylesheet" href="/stylesheets/style.css" />
    	</head>
		<body>
    	<h1><%= title%></h1>
    	<p>Upload a photo to your account below.</p>
    	<form method="post" enctype="multipart/form-data" >
        <p><input type="text",name="photo[name]",placeholder="Name" /></p>
        <p><input type="file", name="photo[image]" /></p>
        <p><input type="submit", value="Upload" /></p>
    	</form>
		</body>
		</html>
		```

	app.use(logger('dev'));
	app.use(bodyParser.json());
	app.use(bodyParser.urlencoded({ extended: false }));
	app.use(cookieParser());
	app.use(express.static(path.join(__dirname, 'public')));
	app.use(multipart());

用的是connect-multipart处理的上传,req.body.photo字段却找不到
7 回复

用的是connect-multipart处理的上传,req.body.photo字段却找不到

是 connect-multiparty 吗? 是的话,上传的文件是放在 req.files 里的。

@IchiNiNiIchi <input type=“text”,name=“photo[name]”,placeholder=“Name” /> photo.name也只能在files吗

@insisthzr 只有文件才是在 res.files。按照你的代码,试试 req.body.photo[name]。

@IchiNiNiIchi body当中没东西

@IchiNiNiIchi 是因为bodyparser问题吗,刚学nodejs,照书上express3写的,用的是express4

@insisthzr 代码

var express = require('express');
var bodyParser = require('body-parser');
var multipart = require('connect-multiparty');

var app = express();

// 设置模板
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

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

app.get('/', function(req, res) {
  res.render('index');
});

app.post('/', multipart(), function(req, res) {
  console.log(req.files);
  res.redirect('/');
});

输出

{ photo:
   { image:
      { fieldName: 'photo[image]',
        originalFilename: 'photobank.jpg',
        path: '',
        headers: [Object],
        size: 91690,
        name: 'photobank.jpg',
        type: 'image/jpeg' } } }

@insisthzr connect-multiparty 自己都不建议使用 connect-multiparty, 建议你换个别的,例如 connect-busboy 或者 multer。

回到顶部