2012-01-10 44 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