$_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]要素はファイルの容量。