teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

強制バリデーション

2017/01/12 07:24

投稿

maisumakun
maisumakun

スコア146672

answer CHANGED
@@ -1,3 +1,3 @@
1
- PHPのコードでバリデーションを行うことは**不可能**です。POSTされたファイルのデータが`upload_max_filesize`より大きかった場合、**PHPのコードを実行する前に**ファイルは削除されてしまい、たコードからそれ判断できせん
1
+ POSTされたファイルのデータが`upload_max_filesize`より大きかった場合、**PHPのコードを実行する前に**ファイルは削除されてしまい、`$_FILES[フォームのname]['error']`に`UPLOAD_ERR_INI_SIZE`(1)という値を残します([PHPマニュアル](http://php.net/manual/ja/features.file-upload.errors.php))。**自分でバリデーションをわなくても、これは強制的に適用されす**
2
2
 
3
- 、このデータをフォーム側に送って、**JavaScriptで**バリデーションすること、[File API](https://developer.mozilla.org/en-US/docs/Web/API/File)の実装されたブラウザ(IE 10以降を含むモダンブラウザ)であれば可能です。`(type=fileのinputオブジェクト).files[0].size`にバイト単位の大きさが入っていますので、これをチェックすれば容量チェックはできます。
3
+ た、このデータをフォーム側に送って、**JavaScriptで**バリデーションすること、[File API](https://developer.mozilla.org/en-US/docs/Web/API/File)の実装されたブラウザ(IE 10以降を含むモダンブラウザ)であれば可能です。`(type=fileのinputオブジェクト).files[0].size`にバイト単位の大きさが入っていますので、これをチェックすれば容量チェックはできます。