HTMLフォームを介した最大アップロードファイルサイズの設定

ファイルをアップロードするときに多くの人々が問題に直面しました。サーバーは頑固に私たちにとって大きすぎるファイルをダウンロードしようとしているため、このプロセスはユーザーを遅くするだけでなく、ユーザーを無駄に待たせるだけでなく、ファイルがダウンロードされているサーバー自体をロードします。

PHPがインストールされたApacheサーバーの場合、次の2つの方法でこのプロセスを制限できます。
  1. ファイルのアップロードをPHP設定に制限する
  2. フォーム要求をサーバーに送信するメカニズムを使用してファイルのアップロードを制限する(POSTメソッドのみ)
最初のオプションが管理者とプログラマーの間で非常に一般的である場合、2番目のシンプルな(カスタムとも言えます)はあまり一般的ではありません。

検討したいと思います。
したがって、フォームでmethod="post" enctype="multipart/form-data"enctype="multipart/form-data"から始めましょう。 次に、非表示のフォーム要素を作成します。
<input type="hidden" name="MAX_FILE_SIZE" value="1111111">

MAX_FILE_SIZE要素の値では、必要なダウンロードファイルの最大サイズをバイト単位で指定します。
この要素ファイル選択フィールドの (たとえば、formタグの直後)でなければならないという事実に特に注意する必要があります。

例:
<form method="post" .... enctype="multipart/form-data">
<input type="hidden" name="max_file_size" value="1111111">
...
<input type="file" name="photo" >
...
</form>


実際に行われること(PHPとApacheの一部の構成ではこの方法が禁止されています):
PHPは最初にファイルサイズ制限オプションを取得します。 次に、その値を読み取り、ファイルサイズが必要なサイズを超えた$ _FILES配列の要素を「ダンプ」します。

彼がそのような要素で何をするかの例:
Array ( [photo] => Array ( [name] => my_photo.jpg [type] => [tmp_name] => [error] => 2 [size] => 0 )

ご覧のとおり、彼はそのような要素に0以外のエラーコードを設定し(0 =アップロード成功)、このエラーは「アップロードされたファイルはHTMLフォームで指定されたMAX_FILE_SIZEディレクティブを超えています」または「ダウンロードされたファイルのサイズはHTMLフォーム。」

注意:
サーバーがPHPのWebサイトで返す可能性のあるエラーについて詳しく読むことができます。
php.netのメカニズムの詳細な説明

PS:この記事が多くのコーダー、特にサーバーのPHP設定を変更するサーバー権限を持っていない人に役立つことを願っています。

ZZY:私のトピックでは、メカニズムの1つとそれを使用した経験を説明したかっただけです。 これは、 追加の 、場合によっては便利な検証メカニズムにすぎないため、必須のアクションのガイドではありません。

ZZZY:コメントのステートメント、要望、紛争、アドバイスを考慮して編集。

Source: https://habr.com/ru/post/J69532/


All Articles