html+js、php formでファイルアップロード前に容量チェックを行う
formからファイルをアップロードしたいけど、サーバに送る前に容量チェックをしたい
作成日:2021-11-08, 更新日:2022-02-08
JSのサンプル
▼任意のタイミングで容量チェックを行う
let chk_fileSize = function(elm){ if(elm.val()){ let file = elm.prop('files')[0]; return file.size; } else { return 0; } } $(〇〇〇).on('click', 'input[type=submit]', function(){ // 送信する寸前 let fileSize = chk_fileSize($('input[type=file]')); // 複数あるならループさせる・・・とか。 if ( 〇〇〇 < fileSize ) { alert('アップロードできるのは、〇〇〇バイト以下のファイルです'); $(this).val(''); // 内容をクリア return false; } }); $(〇〇〇).on('change', 'input[type=file]', function(){ // ファイルを選択したとき let fileSize = chk_fileSize($(this)); if ( 〇〇〇 < fileSize ) { alert('アップロードできるのは、〇〇〇バイト以下のファイルです'); $(this).val(''); // 内容をクリア } });
サーバ側の問題
サーバ側で受取るコトが出来るファイルサイズが決まっているので変更する
- php.ini
- .htaccess
- httpd.conf
- .user.ini
- ini_set()
設定を変更する場合、上記のどれかを修正すればOK
ただし、設定したい項目によっては設定箇所に指定があったりする
ファイルのアップ時の容量をどうにかしたい
・「PHP_INI_ALL」は「ini_set()」もOK。
・「PHP_INI_PERDIR」は「ini_set()」はNG。
名称 | 変更可能 | メモ |
---|---|---|
max_execution_time | PHP_INI_ALL | 処理の制限時間(秒) |
memory_limit | PHP_INI_ALL | スクリプトが確保できる最大メモリ。post_max_sizeより小さいのはダメ |
post_max_size | PHP_INI_PERDIR | POSTデータに許可される最大サイズ。upload_max_filesizeより大きくする |
upload_max_filesize | PHP_INI_PERDIR | アップロードされるファイルの最大サイズ |
「.htaccess」の記述
php_value max_execution_time 600 php_value memory_limit 128M php_value post_max_size 256M php_value upload_max_filesize 512M
サーバの設定で500エラーになることもある(※レンタルサーバだと設定方法についてどっかに記載があると思われる)
ini_set()で設定
無理。
※「post_max_size」「upload_max_filesize」は「PHP_INI_PERDIR」なので「ini_set()」が無効になる
▼こんな感じで設定できるって聞いたことがあるんだけど・・・昔は動いていたのかな・・・? それともサーバの設定で変更できるのかな?
ini_set('memory_limit', '128M'); ini_set('post_max_size', '256M'); ini_set('upload_max_filesize', '512M');