Web アプリケーションからのファイルのアップロードを処理するスクリプトを作成しています。アプリケーションにアップロードできるファイルのサイズに制限があります (ストレージ容量の制限)。私は現在、ユーザーが実際にファイルをアップロードしたことを確認する検証コードをいくつか入れようとしています。これにより、適切なエラーメッセージを表示できるようになります。しかし、ユーザーが大きすぎるファイルをアップロードした場合に、ユーザーにエラー メッセージを表示できるようにしたいとも考えています。これには Javascript を使用できますが、Javascript が有効になっていない場合に備えて PHP チェックも行いたいと思います。
PHP.ini の POST_MAX_SIZE 変数を最大ファイル アップロード サイズに設定しましたが、予期しない問題が発生しました。誰かが POST_MAX_SIZE より大きいファイルをアップロードしようとすると、バイナリ データは最大サイズで切り捨てられ、$_FILES 配列にはそのファイルのエントリが含まれません。これは、ユーザーがファイルをまったく送信しなかった場合と同じ動作です。
これにより、$_FILES 配列にファイルが含まれていない理由、つまりファイルがアップロードされていないのか、大きすぎて完全に送信できないのかを判断するのが難しくなります。
これら2つのケースを区別する方法はありますか? つまり、ファイルの POST データが送信されたが、ファイル全体が送信される前に途中で切り捨てられたかどうかを確認する方法はありますか?