2

私のフォームはシンプルです。ng-flowを使用してファイルのアップロードを処理します。

<form class="form-horizontal" enctype="multipart/form-data">
    <div flow-init="{target: '/test', testChunks: false, query: {'_csrf': '{{csrf}}', 'somestring': 'teststring'} }"
         flow-files-submitted="data.flow.upload()"
         flow-name="data.flow">

         <input type="file" flow-btn/>
    </div>
</form>

イメージが選択されるng-flowと、ターゲット ルートに POST が実行されます。リクエストペイロードには次のようなものがたくさんあるため、画像が送信されたようです。

1048576
------WebKitFormBoundaryw2YAG9m602ICPd0Q
Content-Disposition: form-data; name="flowCurrentChunkSize"

画像はあまり大きくありません (~1MB)

nodejs 側 (express を使用):

var busboy = require('connect-busboy')({
    limits: {
        fileSize: 10 * 1024 * 1024
    }
});
router.post('/test', busboy, function(req, res) {
    console.log('test called');
    console.log(req.busboy);
    if (req.busboy) {
        req.busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
            console.log("this is fieldname: " + fieldname);
        });
        req.busboy.on('field', function(fieldname, val, fieldnameTruncated, valTruncated) {
            console.log('Field [' + fieldname + ']: value: ' + inspect(val));
        });
    }

    res.json();
});

req.busboy物でいっぱいのオブジェクトを返しますがreq.busboy.on('file'...req.busboy.on('field'...)決してトリガーしません。

busboy が私の文字列と画像を見ないのはなぜですか?

4

1 に答える 1

2

フォームを解析できるように、要求を busboy にパイプする必要があります。

req.pipe(req.busboy);
于 2015-04-18T20:22:56.390 に答える