第13章ファイルのアップロード


学習ポイント:1.PHPアップロード構成2.$FILES配列3.PHPアップロード関数の多くはWebページのみを含むと考えているが、HTTPプロトコルは実際にofficeドキュメント、PDF、実行可能ファイル、AVI、圧縮ファイル、その他のファイルタイプなどの任意のファイルを転送することができる.FTPは歴史上、サーバーにファイルをアップロードする標準的な方法だったが、ホームページを通じてファイルをアップロードすることも流行してきた.1.PHPアップロード構成には、PHPのファイルアップロード機能を細かく調整するための構成命令がある.これらのコマンドは、PHPのファイルアップロードを有効にするかどうか、許可可能な最大アップロードファイルサイズ、許可可能な最大スクリプトメモリ割り当て、その他の重要なリソースを決定するために使用されます.1.file_uploads=on|off:サーバ上のPHPスクリプトがファイルアップロードを受け入れるかどうかを決定します.2.max_execution_time=integer:PHPスクリプトは、致命的なエラーを登録する前に実行できる最長時間を秒単位で指定します.3.memory_Limit=integer:スクリプトが割り当てる最大メモリをMB単位で設定します.これにより、制御不能なスクリプトがサーバメモリを独占することを防止できます.4.upload_max_f ilesize=integer:アップロードファイルの最大サイズをMB単位で設定します.このコマンドはpost_より小さくなければなりません.max_size .5.upload_tmp_dir=string:ファイルが最終宛先に移動するまで、アップロードファイルを処理する前にサーバの一時的な場所に保存する必要があることを設定します.6.post_max_size=integer:POSTメソッドで許容できる情報の最大サイズをMB単位で決定します.二.$FILES配列アップロードフォームのHTMLアップロードファイル: ENCTYPE="multipart/formform-data"であり、ここでは"multipart/form/formform-form"であり、ここでは"書き方を固定しないとファイルアップロードに失敗するACTION=「upload.php」は、アップロードするプログラムファイルの処理経路METHOD=「post」を定義し、転送方式をPOSTと定義し、一般的にFormコミットデータはPOST<input type=「hidden」name=「MAX_FILE_SIZE」value=「100000」に設定される>,これは非表示ドメインであり,アップロードファイルのサイズ上限を定義しているが,この値を超えるとアップロードに失敗する.ファイルアップロードドメインの前に定義しなければならない.php.iniファイルでupload_max_f ilesizeで設定した値を超えてはならない.そうでなければ意味がない.(注意:MAX_FILE_SIZEの値はブラウザに対する一つのアドバイスにすぎず、実際には簡単に迂回することができる.そのためブラウザに対する制限をその値に期待しないでください.実際、PHP.ini設定におけるアップロードファイルの最大値は、失効しません.ただし、フォームにMAX_FILE_SIZEを加えると、ユーザーがアップロードを待つ時間がかかるのを避けることができるので、ファイルの後で、ファイルが大きすぎることに気づきました.)、これはファイルアップロードドメインです.Type属性はfileに設定する必要がありますが、Name属性はカスタマイズできます.この値はコードファイルに.$_FILESスーパーグローバル変数を使用します.この値は、PHPスクリプトによってサーバにアップロードされるファイルにとって重要なアップロードに関する情報を格納します.1.$_FILES["userfile""tmp_name"]に格納されます.変数の値は、ファイルがWebサーバに一時的に格納されている場所です.2.$_FILES["userfile""n ame"]変数に格納されている値が、ユーザシステムのファイル名です.3.$_FILES["userfile""s ize"]変数に格納されている値が、ファイルのバイトサイズです.4.$_FILES["userfile"][type"]変数の値は、text/pla inまたはimage/gifなどのファイルのMIMEタイプです.5.$_FILES["userfile"][error"]に格納されます.変数の値は、ファイルのアップロードに関連するエラー・コードになります.これはPHP 4.2.0で追加された新しい機能です.errorでは、エラーが発生していないことを示す配列定数がいくつか用意されています.1:アップロード・ファイルのサイズが所定の値を超えていることを示します.ファイルのサイズの最大値は、upload_max_f ilesizeのPHPプロファイルで指定されています.2:アップロード・ファイルを示します.サイズがHTMLフォームのMAX_FILE_SIZE要素で指定した最大値を超えています.3:ファイルが部分的にアップロードされていることを示します.4:ファイルがアップロードされていないことを示します.
<?php
print_r($_FILES);
?>

 3.PHPアップロード関数PHPのファイルシステムライブラリに大量のファイル処理関数が提供されているほか、PHPはファイルアップロードプロセスに特化した2つの関数:is_uploaded_file()とmove_uploaded_f ile()を提供している.1.ファイルをアップロードするかどうかを決定する:is_uploaded_file()
if (is_uploaded_file( $_FILES["userfile"]["tmp_name"])) {
echo '          ' ;
} else {
echo '  ' ;
}

 2.アップロードファイルの移動:move_uploaded_f ile()
if (!move_uploaded_file($_FILES["userfile"][ "tmp_name"], $_FILES["userfile"][ "name" ])) {
echo '     ';
exit;
}