请求体已经解析了为什么req.files还为undefined??会不会是异步的问题,小白求解答啊,搞一天了啊
发布于 7 年前 作者 dddXia 2877 次浏览 来自 问答

下面代码里使用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 回复

@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。。。。。

回到顶部