1

ファイルとフィールドを含む FormData をサーバー上のルートに送信していますが、connect-busboy が両方のイベントを発生させるのに問題があります。

クライアント側には次のものがあります。

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

fetch を使用しているので、fetch オブジェクトの body プロパティにデータを割り当てます。

fetch(url, {

method: 'POST',
body: data

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

サーバーの URL ルート:

で構成されたbusboyミドルウェアを使用します

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

私の問題は、「ファイルが解雇される」だけだということです。ファイルリスナーを取り出すと、「フィールドが起動」します。この設定でファイルのみが起動される理由を知っている人はいますか? また、私が現在使用している他のミドルウェアはcookieParserexpressSessionおよびパスポートのみです。

4

1 に答える 1

1

ドキュメントをもう一度見てから、読み取り可能なストリームを処理する必要があることに気付きました。私の場合、「ファイル」はストリームです。

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

これで問題が解決しました。

于 2016-07-02T20:12:30.270 に答える