スーパーグローバル変数$_FILES
入力フォームでファイルを添付する機能があるかと思います。
このファイル添付時に使用する変数の $_FILES の解説をします。
$_FILESとは
$_FILESとは、PHPの定義済み変数のひとつで、POSTメソッドでアップロードしたファイルの情報を格納した二次元配列となっている。
使い方
$_FILESは、二次元配列になっている。
1つ目のキーは、入力フォームのファイル送信欄の「name」属性値。
2つ目のキーは、name、type、size、tmp_name、errorのいづれかである。
例えば、ファイル送信欄の「name」属性値が「systemFile」であれば、下記となる。
二次元配列
// ファイルの名前
$_FILES['systemFile']['name']
// ファイルのMIME型(MIMEタイプとはファイルの種類の情報を表すもので「png」「jpeg」等)
$_FILES['systemFile']['type']
// ファイルのサイズ(バイト単位)
$_FILES['systemFile']['size']
// テンポラリファイル(一時的に保存されるファイル)
$_FILES['systemFile']['tmp_name']
// ファイルアップロードに関するエラーコード
$_FILES['systemFile']['error']
ファイルアップロードに関するエラーコード
- 0 :エラーなし。ファイルアップロード成功。
- 1 :ファイルサイズが「php.ini」の「upload_max_filesize」の値を超えている。
- 2 :ファイルサイズが送信フォームで指定した「MAX_FILE_SIZE」の値を超えている。
- 3 :一部しかアップロードされなかった。
- 4 :アップロードされなかった。
- 6 :テンポラリフォルダがない。
- 7 :ディスクへの書き込みに失敗。
- 8 :PHP拡張モジュールがファイルアップロードを中止。
HTMLの<form>
タグで「method属性をPOST」、「enctype属性をmultipart/form-data」にしなければならない。
サンプル
遷移前
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>$_FILESサンプル</title>
</head>
<body>
<h1>画像のアップロード前</h1>
<p>下記画像アップロード</p>
<img src="https://1.bp.blogspot.com/-hk-wB0PZBjo/XyZ_RMcHCyI/AAAAAAABaZ4/iEm-0O-3lZYFXHypV3vxNoD83GDt8OPKQCNcBGAsYHQ/s1600/computer_shigotoscreen_back_man.png" width="200" height="200" >
<form method="post" action="bbb.php" enctype="multipart/form-data">
<input type="file" name="systemFile"> <br>
<input type="submit" value="送信">
</form>
</body>
</html>
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F2660506%2F46ce4536-e362-1c09-a5a8-dcb1296683da.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=0d5b155b6e0e93693084071a7da5da7e)
遷移後
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>$_FILESサンプル</title>
</head>
<body>
<h1>画像のアップロード後</h1>
<p>画像アップロード情報</p>
<p>ファイル名:<?php echo $_FILES['systemFile']['name'] ?></p>
<p>ファイル形式:<?php echo $_FILES['systemFile']['type'] ?></p>
<p>ファイルサイズ:<?php echo $_FILES['systemFile']['size'] ?></p>
<p>tmpファイル:<?php echo $_FILES['systemFile']['tmp_name'] ?></p>
<p>エラー情報:<?php echo $_FILES['systemFile']['error'] ?></p>
</body>
</html>
参考
PHP マニュアル 言語リファレンス
【初心者向け】$_FILESで画像をアップロードする方法
著者: E.R (株式会社ウィズツーワン)