2016-07-02 8 views
1

ファイルとフィールドを含むFormDataをサーバー上のルートに送信していますが、connect-busboyで両方のイベントを起動できません。ファイルとフィールドでFormDataを送信すると、busboyはファイルイベントのみを起動します

私はクライアント側で

:私は、私はフェッチオブジェクトのボディプロパティにデータを割り当てるフェッチ使用しています

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

。サーバーのURLのルート上に

fetch(url, { 

method: 'POST', 
body: data 

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

が、私はその後、私が持っている

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

で構成busboyミドルウェアを使用するには、

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(); 
} 

これは私の問題を解決しました。

関連する問題