下記のコードは、画像フォームで選択した時に、バイト数が大きい画像の場合は、送信できないようにしています。やり方としては、送信ボタンにstyle="display: none"をつけて、それを画像選択時のサイズの取得により、隠したり、表したりしています。ただ問題がありまして、GoogleChrome F12キーより、コードを確認し、style="display: none"を消してしまえば、送信ボタンが表示され、その時に、大きなサイズのファイルでも送信できてしまいます。解決策として思いつくことは、やはり、送信先でのPHP側で処理しか思い浮かばず、できるだけファイル遷移しないで、完結したいと思いますが可能なのでしょうか?
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>TEST</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> </head> <body> <form action="data.php" method="post" enctype="multipart/form-data"> <input type="file" id="file" name="img" accept="image/*"> <input type="submit" name="send" value="送信" style="display: none";><div id="alert"></div> </form> <script type="text/javascript"> $(function () { $('input[type=file]').bind('change', function() { var size = this.files[0].size; $('input[type=submit]').hide(); if(1048576 < size){ $('#alert').html('イメージサイズが多きすぎです (' + size + 'バイト)' ); }else{ $('input[type=submit]').show(); $('#alert').html(''); } } ); }); </script> </body> </html>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。