【PHP】「$_FILES」 — HTTP FILES 変数
【PHP】
「$_FILES」 — HTTP FILES 変数
「$_FILES」とは
HTTPのPOSTメソッドで,現在のスクリプトにアップロードされたファイル扱う連想配列。
$HTTP_POST_FILESは、$_POSTと同じ情報を持っている。
$HTTP_POST_FILESは、スーパーグローバルではない。
$HTTP_POST_FILESと$_FILES は違う変数で、PHPはそれぞれ別に扱う。
アップロードされたファイルは、テンポラリファイルとして保存されているので、
move_uploaded_file 関数を利用して、任意の場所へファイルを移動する。
エラーチェックをした後、ファイルの有無を確認して移動するのが良い。
POSTメソッドでのファイルの渡し方
<form action="スクリプトのURL" method="FILES">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input name="名前" type="file" />
</form>
HTMLのフォームで、FILESメソッドで送信することで、PHPスクリプトに値を渡すことができる。
アップロードファイルの移動
アップロードされたファイルは、テンポラリファイルとして保存されているので、
「move_uploaded_file」関数を利用して、任意の場所へファイルを移動する。
エラーチェックをした後、ファイルの有無を確認して移動するのが良い。
「$_FILES」の書式
ファイル情報の参照方法
$_FILES["名前"]["name"];
$_FILES["名前"]["type"];
$_FILES["名前"]["tmp_name"];
$_FILES["名前"]["error"];
$_FILES["名前"]["size"];
name | 元のファイル名 |
type | ファイルの MIME タイプ |
tmp_name | サーバー上で保存されているテンポラリファイルの名前 |
error | エラーコード |
size | ファイルサイズ(byte) |
エラーコード
0 : UPLOAD_ERR_OK |
ファイルアップロードは成功しています。
|
1 : UPLOAD_ERR_INI_SIZE |
ファイルサイズが upload_max_filesize ディレクティブの値を超えています。
|
2 : UPLOAD_ERR_FORM_SIZE |
ファイルサイズが MAX_FILE_SIZE を超えています。
|
3 : UPLOAD_ERR_PARTIAL |
ファイルの一部のみしかアップロードされていません。
|
4 : UPLOAD_ERR_NO_FILE |
ファイルがアップロードされませんでした。
|
6 : UPLOAD_ERR_NO_TMP_DIR |
テンポラリフォルダがありません。
|
7 : UPLOAD_ERR_CANT_WRITE |
ディスクへの書き込みに失敗しました。
|
8 : UPLOAD_ERR_EXTENSION |
拡張モジュールがファイルのアップロードを中止しました。
|
●アップロードファイルの最大サイズを制限する
php.iniの「upload_max_filesize」ディレクティブと「post_max_size」ディレクティブを超えるサイズのファイルはアップロードで不可。
サイズを超えてアップロードすると、変数「$_FILE」にはNULLがセットされる。
●フォームでアップロードファイルを指定しない場合
$_FILE[ パラメータ名 ][ size ]にゼロがセットされ、$_FILE[ パラメータ名 ][ error ]には「4」がセットされる。