SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【php】ファイルアップロード時のエラーコードとエラーメッセージ

ファイルのアップロードを扱うときは、$_FILES[“file”][‘error’]の値を見ると、正常にファイルが送信されてきたかどうかわかる。

$_FILES[‘file’][‘error’]の値を見てエラーメッセージを作成してみる例。

//<input type="file" name="name_of_file" />
$messages = array();
switch ($_FILES["name_of_file"]['error']) {
	case UPLOAD_ERR_OK:
		//値: 0; この場合のみ、ファイルあり
		break;

	case UPLOAD_ERR_INI_SIZE:
		//値: 1; アップロードされたファイルは、php.ini の upload_max_filesize ディレクティブの値を超えています(post_max_size, upload_max_filesize)
		$messages[] = 'アップロードされたファイルが大きすぎます。' . ini_get('upload_max_filesize') . '以下のファイルをアップロードしてください。';
		break;

	case UPLOAD_ERR_FORM_SIZE:
		//値: 2; アップロードされたファイルは、HTML フォームで指定された MAX_FILE_SIZE を超えています。
		$messages[] = 'アップロードされたファイルが大きすぎます。' . ($_POST['MAX_FILE_SIZE'] / 1000) . 'KB以下のファイルをアップロードしてください。';
		break;

	case UPLOAD_ERR_PARTIAL:
		//値: 3; アップロードされたファイルは一部のみしかアップロードされていません。
		$messages[] = 'アップロードに失敗しています(通信エラー)。もう一度アップロードをお試しください。';
		break;

	case UPLOAD_ERR_NO_FILE:
		//値: 4; ファイルはアップロードされませんでした。(この場合のみ、ファイルがないことを表している)
		$messages[] = 'ファイルをアップロードしてください';
		break;

	case UPLOAD_ERR_NO_TMP_DIR:
		//値: 6; テンポラリフォルダがありません。PHP 4.3.10 と PHP 5.0.3 で導入されました。
		$messages[] = 'アップロードに失敗しています(システムエラー)。もう一度アップロードをお試しください。';
		break;

	default:
		//UPLOAD_ERR_CANT_WRITE 値: 7; ディスクへの書き込みに失敗しました。PHP 5.1.0 で導入されました。
		//UPLOAD_ERR_EXTENSION 値: 8; ファイルのアップロードが拡張モジュールによって停止されました。 PHP 5.2.0 で導入されました。 
		//何かおかしい
		$messages[] = 'アップロードファイルをご確認ください。';
		break;
}
if (!$messages && !is_uploaded_file($_FILES["name_of_file"]['tmp_name'])) {
	//何か妙なことがおきているようだ
	$messages[] = 'アップロードファイルをご確認ください。';
}
if (!$messages) {

	//ここまででエラーメッセージがなければ処理を進める
	//処理続行...

}

関連するメモ

コメント(1)

gifu 2010年4月14日 17:34

エラーNoに5がないのはなんでだろう、とか思ったことがあります。