0

アップロードした画像をクライアントからサーバーに送信しようとしています。私はこのようにしています:

...
var files = document.getElementById('myForm').files;
var formData = new FormData();
formData.append('image', files[0]);
$.ajax({
    url: '/upload',
    data: formData,
    processData: false,
    contentType: false,
    type: 'POST',
    success: function(data){
        alert(JSON.stringify(data));
    }
});
...

サーバーで私は使用してExpressいます。次に、サーバーにアップロードされたファイルにアクセスするには、connect-busboyモジュールを使用します。

...
router.post('/upload', function(req, res, next) {
  req.pipe(req.busboy);
  req.busboy.on('file', function (fieldname, file, filename) {
    //do something
  });
  req.busboy.on('filesLimit', function(){
    //do something
  });
});
...

アップロードされたファイルのファイル サイズ制限を設定するfileSizeには、connect-busboy コンストラクターでオプションを 3 mb に設定します。

...
app.use(
    busboy({
      limits: {
        fileSize: 3*1024 //3 mb
      }
    })
);
...

問題は、3 MB を超えるサイズの画像をアップロードすると、filesLimitイベントが発生しないことです。さらに悪いことに、fileこの瞬間にイベントが発生し、(!) わずか 3 MB のファイルが使用可能になります。

なにが問題ですか?filesLimitイベントが発生しないのはなぜですか? ご協力いただきありがとうございます!

4

1 に答える 1