form中post的属性找不到
<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。