<div id="login">
<h2>用户登录</h2>
<form method="post" enctype="multipart/form-data" action="http://localhost:3000/site/upload/20008">
用户名:<input id="contact" type="file" /><br/>
<input type="submit" class="btn_login" value="登录" />
</form>
</div>
console.log(req.files);
增加一个中间件到express种 app.use(express.bodyParser({uploadDir: ‘./uploads’}))
增加了之后还是不行,会不会是 enctype=“multipart/form-data” 的原因? console.log(req.body); console.log(req.files); 结果分别为: {} undefined 但是 去掉enctype="multipart/form-data" console.log(req.body); console.log(req.files); 结果分别为: {username:“abc”,password:“123” ,thumbnail:“a.txt”>} undefined
原来是这样的:
app.use(express.bodyParser({uploadDir:’./tmp’})); //一定要放在app.use(app.router);前面 app.use(app.router);
找了好久才找到原因。。。
我的也是这个情况,按楼上说的放到前面也还是不行。改用别的中间件了
@librasama express 4 + 用multer
建议用multer 自豪地采用 CNodeJS ionic
纠正下楼主的编程风格,首先你的form里的action要写成相对路径,因为你不可能每次发布都去修改一次源代码对吧? 其次你的表单input属性没有name属性,POST提交表单后台接收需要寻找name属性标签的
很开心看到楼主最终解决问题。Express中设置中间件的顺序是很重要的,先设置好中间件,在绑定router。中间件把请求处理完之后(也就是经过解析文件,产生了req.files),在传到后继的router中,router才能继续处理。大概原理是这样 :)