$_FILESの中身

$_FILESというグローバル変数を用いることでPOST通信におけるファイルのアップロードができるようになります。

その中身は

Array
(
    [your-file1] => Array
        (
            [name] => toire.jpg
            [type] => image/jpeg
            [tmp_name] => /tmp/phpneHggE
            [error] => 0
            [size] => 18281
    ...

    [your-file5] => Array
        (
            [name] => 
            [type] => 
            [tmp_name] => 
            [error] => 4
            [size] => 0
        )

)

こんな感じになっています。

[name]要素はクライアントマシンの元のファイル名

[type]要素はファイルのMIME型。

このMIME型はブラウザが提供するものでPHP側ではチェックされません。そのため、この値は信用できないようです。

[tmp_name]要素はアップロードされたファイルがサーバー上で保存されている一時ファイルの名前。

[error]要素はエラーコードでマニュアルによると下のようになっています。

UPLOAD_ERR_OK 値: 0; エラーはなく、ファイルアップロードは成功しています。

UPLOAD_ERR_INI_SIZE 値: 1; アップロードされたファイルは、php.ini の upload_max_filesize ディレクティブの値を超えています。

UPLOAD_ERR_FORM_SIZE 値: 2; アップロードされたファイルは、HTML フォームで指定された MAX_FILE_SIZE を超えています。

UPLOAD_ERR_PARTIAL 値: 3; アップロードされたファイルは一部のみしかアップロードされていません。

UPLOAD_ERR_NO_FILE 値: 4; ファイルはアップロードされませんでした。

UPLOAD_ERR_NO_TMP_DIR 値: 6; テンポラリフォルダがありません。PHP 5.0.3 で導入されました。

UPLOAD_ERR_CANT_WRITE 値: 7; ディスクへの書き込みに失敗しました。PHP 5.1.0 で導入されました。

UPLOAD_ERR_EXTENSION 値: 8; PHP の拡張モジュールがファイルのアップロードを中止しました。 どの拡張モジュールがファイルアップロードを中止させたのかを突き止めることはできません。 読み込まれている拡張モジュールの一覧を phpinfo() で取得すれば参考になるでしょう。 PHP 5.2.0 で導入されました。

[size]要素はファイルの容量。