2016-07-02 45 views
1

我送FORMDATA與文件和​​現場到我的服務器上的路線,但我有麻煩連接,打雜火兩個事件。當文件和現場發送FORMDATA,打雜只觸發該文件事件

在客戶端,我有:

var data = new FormData(); 
data.append('file', MyFile); 
data.append('key_one', 'value_one'); 

我使用取這樣的話我給你數據的獲取對象的身體屬性。

fetch(url, { 

method: 'POST', 
body: data 

}).then(...){...}.catch(...){...} 

在服務器的URL路徑:

我用

limits: {fileSize: 5 * 1024 * 1024, parts: 2} 

然後我配置了打雜的中間件,

req.pipe(req.busboy); 

req.busboy.on('field', function(key, value){ 
    console.log('field fired'); 
} 

req.busboy.on('file', function(fieldname, file, filename){ 
    console.log('file fired'); 
} 

我的問題是,我只得到'文件被解僱'。如果我拿出文件監聽器,那麼我會得到'野火'。有誰知道爲什麼只有文件被解僱這個設置?此外,我現在使用的唯一其他中間件是cookieParser,expressSession和護照。

謝謝!

回答

1

我們再看一下文件後,我意識到我需要處理的可讀流。在我的情況下,「文件」是流。

req.busboy.on('file', function(fieldname, file, filename){ 
    console.log('file fired'); 
    file.resume(); 
} 

這解決了我的問題。