PHPを学習するとき、PHPアップロードの問題に遭遇する可能性があります。ここでは、PHPアップロードの問題の解決策を紹介し、ここで共有します。この機能を使用すると、ユーザーはテキスト ファイルとバイナリ ファイルをアップロードできます。 PHP の認証機能とファイル操作機能を使用すると、誰にアップロードを許可するか、および PHP によってアップロードされたファイルをアップロード後にどのように処理するかを完全に制御できます。 PHP は、Netscape Composer と W3C の Amaya クライアントで使用されるファイル アップロードの PUT メソッドもサポートしていることに注意してください。
例 1. ファイル アップロード フォーム
次のようにファイル アップロードをサポートする特別なフォームを作成できます:
<ol class="dp-xml"> <li class="alt"><span><span class="comments"><font color="#008200"><!-- The data encoding type, enctype, MUST be specified as below --></font></span><span> </span></span></li> <li class=""> <span></span><strong><font color="#006699"><span class="tag"><</SPAN><SPAN class=tag-name>form</SPAN></FONT></STRONG><SPAN> </SPAN><SPAN class=attribute><FONT color=#ff0000>enctype</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"multipart/form-data"</FONT></SPAN><SPAN> </SPAN><SPAN class=attribute><FONT color=#ff0000>action</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"__URL__"</FONT></SPAN><SPAN> </SPAN><SPAN class=attribute><FONT color=#ff0000>method</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"POST"</FONT></SPAN><SPAN class=tag><STRONG><FONT color=#006699>></span></font></strong><span> </span> </li> <li class="alt"> <span></span><span class="comments"><font color="#008200"><!-- MAX_FILE_SIZE must precede the file input field --></font></span><span> </span> </li> <li class=""> <span></span><strong><font color="#006699"><span class="tag"><</SPAN><SPAN class=tag-name>input</SPAN></FONT></STRONG><SPAN> </SPAN><SPAN class=attribute><FONT color=#ff0000>type</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"hidden"</FONT></SPAN><SPAN> </SPAN><SPAN class=attribute><FONT color=#ff0000>name</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"MAX_FILE_SIZE"</FONT></SPAN><SPAN> </SPAN><SPAN class=attribute><FONT color=#ff0000>value</FONT></SPAN><SPAN>=</SPAN><SPAN class=attribute-value><FONT color=#0000ff>"30000"</FONT></SPAN><SPAN> </SPAN><SPAN class=tag><STRONG><FONT color=#006699>/></span></font></strong><span> </span> </li> <li class="alt"> <span><!-- Name of input element determines name in --</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></span><span> </span> </li> </ol>
PHP アップロード POST メソッド Upload
この機能により、ユーザーはテキスト ファイルとバイナリ ファイルをアップロードできます。 PHP の認証機能とファイル操作機能を使用すると、誰にアップロードを許可するか、アップロード後にファイルをどうするかを完全に制御できます。 PHP は、RFC-1867 標準に準拠する任意のブラウザ (Netscape Navigator 3 以降、およびパッチ適用された Microsoft Internet Explorer 3 以降を含む) からアップロードされたファイルを受け入れることができます。 PHP は、Netscape Composer と W3C の Amaya クライアントで使用されるファイル アップロードの PUT メソッドもサポートしていることに注意してください。
例 2. ファイル アップロード フォーム
次のようにファイル アップロードをサポートする特別なフォームを作成できます:
<ol class="dp-xml"><li class="alt"><span><span>___FCKpd___0 </span></span></li></ol>
上記の例の __URL__ は、実際の PHP ファイルを指すように置き換える必要があります。
グローバル変数 $_FILES は、PHP 4.1.0 以降に存在します (以前のバージョンでは $HTTP_POST_FILES に置き換えられました)。この配列には、アップロードされたすべてのファイルに関する情報が含まれています。上記の例の $_FILES 配列の内容は次のとおりです。上の例に示すように、ファイル アップロード フィールドの名前が userfile であると仮定します。名前は何でも構いません。
<ol class="dp-xml"><li class="alt"><span><span>$_FILES['userfile']['name'] </span></span></li></ol>
クライアント マシン ファイルの元の名前。
<ol class="dp-xml"><li class="alt"><span><span>$_FILES['userfile']['type'] </span></span></li></ol>
ファイルの MIME タイプ (ブラウザーがこの情報を提供する場合)。例は「画像/gif」です。ただし、この MIME タイプは PHP 側ではチェックされないため、鵜呑みにしないでください。
<ol class="dp-xml"><li class="alt"><span><span>$_FILES['userfile']['size'] </span></span></li></ol>
アップロードされたファイルのサイズ (バイト単位)。
<ol class="dp-xml"><li class="alt"><span><span>$_FILES['userfile']['tmp_name'] </span></span></li></ol>
ファイルのアップロード後にサーバーに保存される一時ファイル名。
<ol class="dp-xml"><li class="alt"><span><span>$_FILES['userfile']['error'] </span></span></li></ol>
ファイルのアップロードに関連するエラー コード。このプロジェクトは PHP バージョン 4.2.0 で追加されました。ファイルがアップロードされると、php.ini の Upload_tmp_dir が別のパスに設定されていない限り、ファイルはデフォルトでサーバーのデフォルトの一時ディレクトリに保存されます。サーバー側のデフォルトの一時ディレクトリは、PHP 実行環境の環境変数 TMPDIR を変更することでリセットできますが、PHP スクリプト内で putenv() 関数を実行して設定しても効果はありません。この環境変数は、アップロードされたファイルに対して他の操作も実行されていることを確認するために使用することもできます。