2012-01-10 71 views
1

上传文件,我试着上传文件,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()当我打电话uplo广告文件,或者无论如何帮我上传文件不要错误。

回答

1

两件事情:

  • Express基于连接。
  • bodyParser基于强大的,连接形式是基于强大的。

拥有bodyParser和连接形式就像解析请求的主体两次,但第二次,网络流是空的,将无法解析任何东西,永远等待输入。

当连接2.0发布时,此问题已上升,具有处理多部分请求的扩展功能,使连接形式不再适用。

文件无论如何都应该只bodyParser上传和存储在req.files

看看: https://github.com/senchalabs/connect/blob/master/lib/middleware/multipart.js(这是表达与bodyParser做的,当它遇到一个多部分请求)

+0

非常感谢,我明白了 – 2012-01-10 07:53:33