アップロードした画像をクライアントからサーバーに送信しようとしています。私はこのようにしています:
...
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
イベントが発生しないのはなぜですか? ご協力いただきありがとうございます!