$_FILES

$_FILES – PHPリファレンス

$_FILES

$_FILESは、定義済み変数のひとつで、POSTメソッドでアップロードしたファイルの情報を格納した多次元配列となっている。

 

使い方

$_FILESは、二次元配列になっているので、2つのキーで呼び出す。1つ目のキーは、フォーム部品のファイル送信欄のname属性値。2つ目のキーは、nametypesizetmp_nameerrorのいづれか。

例えば、ファイル送信欄のname属性値がuserFileであれば、userFileを1つ目のキーにする。ファイル名を呼び出すのであれば、2つ目のキーを「name」にし、$_FILES['userFile']['name']となる。

$_FILES[‘userFile’][‘name’]
ファイルの名前。
$_FILES[‘userFile’][‘type’]
ファイルのMIME型。
$_FILES[‘userFile’][‘size’]
ファイルのサイズ(バイト単位)。
$_FILES[‘userFile’][‘tmp_name’]
テンポラリファイル名。
$_FILES[‘userFile’][‘error’]
ファイルアップロードに関するエラーコード。

  • 0: エラーなし。ファイルアップロード成功。
  • 1: ファイルサイズが、「php.ini」の「upload_max_filesize」の値を超えている。
  • 2: ファイルサイズが、送信フォームで指定した「MAX_FILE_SIZE」の値を超えている。
  • 3: 一部しかアップロードされなかった。
  • 4: アップロードされなかった。
  • 6: テンポラリフォルダがない。
  • 7: ディスクへの書き込みに失敗。
  • 8: PHP拡張モジュールがファイルアップロードを中止。

$_FILESは、スーパーグローバル変数で、プログラム全体の、どのスコープでも呼び出せる。関数の内部で呼び出す場合、グローバル変数は、グローバル宣言するが、スーパーグローバル変数は、グローバル宣言すら必要ない。

サンプル

<form action=“sample.php” method=“POST” enctype=“multipart/form-data”>
<p>ファイル: <input type=“file” name=“userFile” /></p>
<p><input type=“submit” value=“送信”></p>
</form>

「sample.txt」というテキストファイルを送信すると、

<?php
echo ‘<p>$_FILES[userFile][name]: ‘ . {$_FILES[userFile][name]}</p>”; // name属性値が「userFile」のファイル送信欄に入力したしたファイルの名前を出力
echo ‘<p>$_FILES[userFile][type]: ‘ . {$_FILES[userFile][type]}</p>”; // name属性値が「userFile」のファイル送信欄に入力したしたファイルのMIME型を出力
echo ‘<p>$_FILES[userFile][size]: ‘ . {$_FILES[userFile][size]}</p>”; // name属性値が「userFile」のファイル送信欄に入力したしたファイルのサイズ(バイト単位)を出力
echo ‘<p>$_FILES[userFile][error]: ‘ . {$_FILES[userFile][error]}</p>”; // ファイルアップロードに関するエラーコードを出力
?>

↓↓↓出力結果↓↓↓

$_FILES[userFile][name]: sample.txt
$_FILES[userFile][type]: text/plain
$_FILES[userFile][size]: 12345
$_FILES[userFile][error]: 0

ファイルサイズ制限

PHPで取得可能なファイルの最大サイズを指定する方法。

<form action=“sample.php” method=“POST” enctype=“multipart/form-data”>
<input type=“hidden” name=“MAX_FILE_SIZE” value=“10000” />
<p>ファイル: <input type=“file” name=“userFile” /></p>
<p><input type=“submit” value=“送信”></p>
</form>

サイズが「12345」の「sample.txt」というテキストファイルを送信すると、

<?php
echo ‘<p>$_FILES[userFile][name]: ‘ . {$_FILES[userFile][name]}</p>”; // name属性値が「userFile」のファイル送信欄に入力したしたファイルの名前を出力
echo ‘<p>$_FILES[userFile][type]: ‘ . {$_FILES[userFile][type]}</p>”; // name属性値が「userFile」のファイル送信欄に入力したしたファイルのMIME型を出力
echo ‘<p>$_FILES[userFile][size]: ‘ . {$_FILES[userFile][size]}</p>”; // name属性値が「userFile」のファイル送信欄に入力したしたファイルのサイズ(バイト単位)を出力
echo ‘<p>$_FILES[userFile][error]: ‘ . {$_FILES[userFile][error]}</p>”; // ファイルアップロードに関するエラーコードを出力
?>

↓↓↓出力結果↓↓↓

$_FILES[userFile][name]: sample.txt
$_FILES[userFile][type]:
$_FILES[userFile][size]: 0
$_FILES[userFile][error]: 2

エラーコード「2」は、送信フォームで指定した「MAX_FILE_SIZE」をオーバーしていることによるエラーを示している。

タイトルとURLをコピーしました