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:コメントのステートメント、要望、紛争、アドバイスを考慮して編集。




All Articles