ホーム > PHPの文法 > 5 変数 > PHP $_FILES(ファイル変数)のすべて【初心者向け基本】
PHPリファレンス

UPDATE:2024年08月15日

PHP $_FILES(ファイル変数)のすべて【初心者向け基本】

PHP $_FILES(ファイル変数)のすべて!【初心者向け基本】 | wepicks!
PHP5 PHP7 PHP8


$_FILES(ファイルアップロード変数)簡単まとめ

$_FILES(ファイルアップロード変数)とは

1 Minute Note

  • $_FILESPHPの定義済み変数(=スーパーグローバル変数)の1つ
  • $_FILESHTTP POST でアップロードされた値を取得するファイルアップロード変数
  • $_FILES連想配列として使用する
  • $_FILES は、関数やメソッドの内部で使用する場合、global $_FILES; とする必要がない

$_FILES(ファイルアップロード変数)の送受信

1 Minute Note

  • $_FILESHTTP POST でアップロードされた値を取得するファイルアップロード変数
  • クライアントからサーバーへファイルをアップロードするには、HTML の formタグmethod属性POST にするHTML の formタグ enctype属性multipart/form-data にするHTML の inputタグ type属性file にする
  • $_FILESには、アップロードされたファイルの
    $_FILES['inputで指定したname']['name']:ファイル名
    $_FILES['inputで指定したname']['type']:ファイルのMIMEタイプ
    $_FILES['inputで指定したname']['tmp_name']:一時保存ファイル名
    $_FILES['inputで指定したname']['error']:アップロード時のエラーコード
    $_FILES['inputで指定したname']['size']:ファイルサイズ(バイト単位)
    $_FILES['inputで指定したname']['full_path']:アップロードされたファイルのフルパス
    の6種類のデータが格納される
PHP でファイルをサーバーにアップロードする際にデータを受信するのが$_FILES(ファイルアップロード変数)です。HTMLの<form>タグで「method属性をPOST」、「enctype属性をmultipart/form-data」にし、<input>タグで「type属性をfile」で送信されたデータが、HTTP POSTメソッドでアップロードされたファイルデータの変数になります。

$_FILES(ファイルアップロード変数)とは

POINT

  • $_FILESPHPの定義済み変数(=スーパーグローバル変数)の1つ
  • $_FILESHTTP POST でアップロードされた値を取得するファイルアップロード変数
  • $_FILES連想配列として使用する
  • $_FILES は、関数やメソッドの内部で使用する場合、global $_GET; とする必要がない

$_FILESは、PHPの定義済み変数のファイルアップロード変数です。この変数は、HTTP POST でアップロードされたファイルの値を取得する変数です。

$_FILESは、連想配列で使用します。

$_FILESは、スーパーグローバル変数なので、スクリプトのコード中どこからでも使用することが出来る変数です。関数やメソッドの内部で使用する場合にも global $_FILES; とする必要はありません。

$_FILESはPHPの定義済み変数

$_FILESは、PHPの定義済み変数の内の1つの変数です。PHPには定義済み変数が複数あります。其の中の1つが$_FILESです。
PHPの定義済み変数はスーパーグローバル変数とも言います。
$_FILES = PHPの定義済み変数 = スーパーグローバル変数
また、$_FILES は自動グローバル変数とも呼ばれます。
(PHPには定義済みの定数というものもあります。詳細はこちらを参照下さい。)

PHPの定義済み変数(=スーパーグローバル変数)

$GLOBALS
(グローバル変数)
・グローバルスコープで使用可能なすべての変数への参照
・連想配列として使用
$_SERVER
(サーバー変数)
・サーバ情報および実行時の環境情報
・連想配列として使用
$_GET
(ゲット変数)
・HTTP GET 変数
・連想配列として使用
$_POST
(ポスト変数)
・HTTP POST 変数
・連想配列として使用
$_FILES
(ファイル変数)
・HTTP ファイルアップロード変数
・連想配列として使用
$_REQUEST
(リクエスト変数)
・HTTP リクエスト変数
・連想配列として使用
$_SESSION
(セッション変数)
・セッション変数
・連想配列として使用
$_ENV
(環境変数)
・環境変数
・連想配列として使用
$_COOKIE
(クッキー変数)
・HTTP クッキー
・連想配列として使用

これら、PHPの定義済み変数は、プログラムコード中何処からでも使用することができます。関数の内部でも globalキーワードを使用せず呼び出すことが出来ます。このように、スーパーグローバル変数は非常に便利なものです。
通常、変数には有効範囲などのルールがあります。このルールは、PHPにおいて変数のスコープという宣言の場所とそれによる有効範囲として定められています。スコープには、「グローバルスコープ」「ローカルスコープ」「スタティック変数」「関数の引数」の4種類ありますが、これらすべてのスコープを持っているのがスーパーグローバル変数です。
変数のスコープについてはこちらを参照下さい。

※注意2:
ただし、スーパーグローバル変数は、関数やクラスメソッドの中の 可変変数 として使用することはできません。

可変変数についてはこちらを参照下さい。

$_FILESの送受信

POINT

  • $_FILES
    HTTP POST でアップロードされた値を取得するファイルアップロード変数
  • クライアントからサーバーへファイルをアップロードするには、HTML の formタグmethod属性POST にするHTML の formタグ enctype属性multipart/form-data にするHTML の inputタグ type属性file にする
  • $_FILESには、アップロードされたファイルの
    $_FILES['inputで指定したname']['name']:ファイル名
    $_FILES['inputで指定したname']['type']:ファイルのMIMEタイプ
    $_FILES['inputで指定したname']['tmp_name']:一時保存ファイル名
    $_FILES['inputで指定したname']['error']:アップロード時のエラーコード
    $_FILES['inputで指定したname']['size']:ファイルサイズ(バイト単位)
    $_FILES['inputで指定したname']['full_path']:アップロードされたファイルのフルパス
    の6種類のデータが格納される

$_FILESは、HTTP POST メソッドでアップロードされたファイルの値を取得します。

HTTPとは、ウェブブラウザとウェブサーバの間でHTMLなどのコンテンツの送受信に用いられる通信プロトコル(通信方法、通信規約というようなものです)のことです。

HTMLの<form>タグで「method属性をPOST」、「enctype属性をmultipart/form-data」にし、<input>タグで「type属性をfile」で送信されたデータが、HTTP POSTメソッドでアップロードされたファイルデータの変数になります。この変数を$_FILESの連想配列として取得することが出来ます。

$_FILESにはアップロードされたファイルの5種類のデータが格納されます。$_FILESは連想配列で使用しますが、key名に注目してください。

5種類のデータ
$_FILES['inputで指定したname']['name']ファイル名
$_FILES['inputで指定したname']['type']ファイルのMIMEタイプ
$_FILES['inputで指定したname']['tmp_name']サーバー上で一時的に保存されるテンポラリファイル名
$_FILES['inputで指定したname']['error']アップロード時のエラーコード
$_FILES['inputで指定したname']['size']ファイルサイズ(バイト単位)

例えば、input type file の name を uploadfile にして、001.gifという画像ファイルをアップロードした場合、$_FILES を print_r で確認すると以下のようになります。

name、type、tmp_name、error、sizeの5種類の内容が確認できます。また、$_FILESは連想配列として使用するので、各データを取得するには以下のようにします。

以下はファイルをアップロードする簡単なサンプルコードです。files_upload1.php と files_upload2.php の2つのファイルを作成して、以下のコードを記述して下さい。

files_upload1.php

HTMLの <form>タグ で method属性 を POST にし、enctype属性 を multipart/form-data にします。

files_upload2.php

アップロードされたファイルデータを$_FILESで取得します。$_FILESは連想配列として利用します。

結果は


Array ( [name] => 1.jpg [type] => image/jpeg [tmp_name] => /tmp/phpXNO3Hl [error] => 0 [size] => 700818 )


1.jpg
image/jpeg
/tmp/phpXNO3Hl
0
700818

となります。

– サンプル Click Here ! –

サンプルコード

実行結果
このページに 「uploadfile」という名前で FILES変数 を送信します。

$_FILES[‘uploadfile’]が送信されました。
Array
(
[name] => 1.jpg
[type] => image/jpeg
[tmp_name] => /tmp/phpRxukKv
[error] => 0
[size] => 700818
)
1

– サンプル Click Here ! –

タグ(=記事関連ワード)

日付

公開日:2017年3月6日
最終更新日:2024年08月15日

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

https://wepicks.net/phpref-files/trackback/

page top