请求体已经解析了为什么req.files还为undefined??会不会是异步的问题,小白求解答啊,搞一天了啊
下面代码里使用app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); 这应该已经解析了请求体啊,为什么req.files还是undefined?
var express = require('express');
var bodyParser = require('body-parser');
var multiparty = require('multiparty');
var app = express();
app.listen(3000);
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.set('photos',__dirname+'/public/photos');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));
app.get('/upload',photos.form);
app.route('/upload').post(function(req,res){
var multiparty = require('multiparty');
var form = new multiparty.Form();//新建表单
//设置编辑
form.encoding = 'utf-8';
//表单解析
form.parse(req, function(err,fields,files) {
//报错处理
if(err){
return;
}
console.log("files: ", files);
var oldpath=files.imgFile[0]['path'];
});
});
module.exports = app;
6 回复
推荐一波 multer
@DevinXian 先说说multiparty 吧。我觉得上面的代码应该没问题了啊,我今天就想完成一个图片上传,结果一天了,还没完成。。
前端怎么写的?
表单是这样的,会不会是表单的问题
<form method="post" >
<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>
```
@polunzh <form method=“post” > <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> ```
@dddXia 我加上了enctype=“multipart/form-data”,然后输出了files。。。。。