PHPの$_FILES変数とは?ファイルアップロードの仕組みと使い方を解説
はじめに
$_FILES は、PHPにあらかじめ定義されているグローバル変数(スーパーグローバル)の一つで、HTTP POSTメソッド経由でアップロードされたファイルの情報を格納する連想配列です。
なお、$HTTP_POST_FILES という変数にも同じ情報が含まれていますが、こちらはスーパーグローバルではなく、現在では非推奨(deprecated)となっているため使用しないようにしましょう。
$_FILES配列に含まれる主な要素
$_FILES 配列には、アップロードされたファイルに関する以下の5つの情報が格納されます。
$_FILES['file']['name'] — アップロードされたファイルの元のファイル名。
$_FILES['file']['type'] — ファイルのMIMEタイプ(例:text/html、image/jpegなど)。
$_FILES['file']['size'] — アップロードされたファイルのサイズ(バイト単位)。
$_FILES['file']['tmp_name'] — サーバー上に一時的に保存されたファイルのパスと一時ファイル名。
$_FILES['file']['error'] — アップロード時のエラーコード。正常に完了した場合は 0(UPLOAD_ERR_OK)が返されます。
ここでいう 'file' の部分は、HTMLフォーム内のinput要素に指定したname属性の値です。
ファイルアップロード用のHTMLフォーム
ファイルをアップロードするには、フォームのmethod属性を「POST」にし、enctype属性を必ず「multipart/form-data」に設定する必要があります。この指定がないと、ファイルデータは正しく送信されません。
以下は、ファイル選択ボタンを持つシンプルなフォームの例(test.html)です。
<form action="testscript.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="送信">
</form>ユーザーがファイルを選択して送信ボタンを押すと、フォームのaction属性で指定されたPHPスクリプトにファイルデータがPOST送信されます。
PHPスクリプトの例
次のPHPコードでは、$_FILES 配列から各情報を取り出して表示しています。
<?php echo "ファイル名: " . $_FILES['file']['name'] . "<br>"; echo "タイプ: " . $_FILES['file']['type'] . "<br>"; echo "サイズ: " . $_FILES['file']['size'] . "<br>"; echo "一時ファイル名: " . $_FILES['file']['tmp_name'] . "<br>"; echo "エラー: " . $_FILES['file']['error'] . "<br>"; ?>
実行結果
このスクリプトを実行すると、たとえば以下のような出力が得られます。
Filename: hello.html Type : text/html Size : 56 Temp name: C:\xampp\tmp\php32CE.tmp Error : 0
まとめ
$_FILES を使えば、アップロードされたファイルの名前・種類・サイズ・保存先・エラー状態といった詳細情報に簡単にアクセスできます。ただし、実際のアプリケーションでは、エラーコードのチェックやファイルタイプの検証、move_uploaded_file() 関数による安全な移動処理などを組み合わせて、セキュリティに配慮した実装を行うことが重要です。
-
PHPファイルとは?開き方・編集・変換方法をわかりやすく解説
PHPファイルとは .phpという拡張子を持つファイルは、PHP(Hypertext Preprocessor)のソースコードが記述された「PHPソースコードファイル」です。主にWebページのファイルとして利用され、Webサーバー上で動作するPHPエンジンによってHTMLを生成します。 ブラウザに表示されるのは、PHPエンジンがコードから生成したHTMLコンテンツです。PHPコードはサーバー側で実行されるため、PHPページにアクセスしてもコードそのものは見えず、サーバーが生成したHTMLだけを受け取る仕組みになっています。 なお、PHPソースコードファイルの中には、.phtml、.php3、.
-
PHPのfile_get_contents()関数とは?使い方とパラメータを徹底解説
PHPのfile_get_contents()関数は、ファイル全体を読み込んで1つの文字列として返す関数です。似た関数であるfile()関数がファイル全体を配列として読み込むのに対し、file_get_contents()関数はファイル全体を単一の文字列として取得できる点が大きな特徴です。基本構文file_get_contents(file_path, flags, context, start_offset, max_length)パラメータの詳細file_path: 読み込み対象となるファイルへのパスを指定します。flags: 以下のフラグをバイナリOR演算子(|)で組み合わせて指定できま