我尝试使用connect-form上传文件,但是如果要上传,则必须禁用bodyParser()中的app.js,如果我保留bodyParser(),则会出现错误:loading forever
这是我的app.js

    app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set('view option', { layout: false });

//  app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(require('stylus').middleware({ src: __dirname + '/public' }));

app.use(express.static(__dirname + '/public'));
app.use(express.cookieParser());
app.use(express.session({secret: 'secrect', store: MemStore({
reapInterval: 60000 * 10
})}));
app.use(app.router);
});


这是我称为upload file的代码

app.post('/album/upload', function( req, res) {
    req.form.complete(function(err, fields, files) {
    if (err) { next(err); console.log('error upload') }
        else {
            console.log(fields);
            console.log('---------------');
            console.log(files);
        res.send('upload successfull');
        }
     });
});


因此,当我调用上传文件时,或者如何帮助我上传文件时,如何禁用bodyParser()不会出错。

最佳答案

两件事情:


Express基于连接。
bodyParser基于强大,而connect-form基于强大。


具有bodyParser和connect-form就像两次解析请求的正文一样,但是第二次,网络流为空,将无法解析任何内容,永远等待输入。

发布connect 2.0时,已经出现了此问题,它具有处理多部分请求的扩展功能,从而使connect-form已过时。

无论如何,应该仅使用bodyParser上传文件,并将其存储在req.files中

看一眼:
https://github.com/senchalabs/connect/blob/master/lib/middleware/multipart.js(这是在遇到多部分请求时express对bodyParser所做的工作。)

关于javascript - 使用连接表单上传文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8798675/

10-11 07:15