【问题标题】:Upload file with connect-form使用连接表单上传文件
【发布时间】:2012-02-06 14:14:10
【问题描述】:

我尝试使用connect-form 上传文件,但如果我想上传我必须在app.js 中禁用bodyParser(),如果我保留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(),或者无论如何帮助我上传文件不会出错。

【问题讨论】:

    标签: javascript node.js upload express


    【解决方案1】:

    两件事:

    • Express 基于 connect。
    • bodyParser基于formidable,connect-form基于formidable。

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

    这个问题在 connect 2.0 发布时出现了,扩展了处理多部分请求的能力,使得 connect-form 过时了。

    文件应该只用bodyParser上传,并存储在req.files

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

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 2012-01-08
      • 2020-09-15
      • 2018-01-25
      • 2022-06-11
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多