PHPプログラミング

最終更新日:
公開日:

レシピ

ファイル / ディレクトリ

POST通信でアップロードされたファイルか確認する

is_uploaded_file関数を使って、アップロードされたファイルがPOST通信でアップされたものかを確認する方法について解説します。

この記事のポイント

  • ファイルがPOST通信で送信されているかが分かる
  • ファイル形式(MIMEタイプ)やファイルサイズは別の方法で確認する

目次

POST通信からアップロードされたか確認する

is_uploaded_file関数を使うと、フォームなどでアップロードされたファイルがPOST通信で送信されてきたものかを確認することができます。

PHP コード例

is_uploaded_file( $_FILES['file1']['tmp_name'] );

POST通信でアップされている場合はtrue、それ以外の方法でアップされている場合はfalseを返します。
この結果から、想定していない方法でファイルがアップロードされていないかを確認できます。

フォームなどを通じてアップロードされる場合、ファイルは仮名で仮フォルダに保存されるため、スーパーグローバル変数$_FILESと組み合わせて使用することが多いです。

使用例

if文の条件式と組み合わせてis_uploaded_file関数を使用するコード例を紹介します。

PHP コード例

// ファイルがアップロードされたか確認
if( !empty($_FILES['file1']['tmp_name']) ) {

	// POST通信でアップロードされたか確認
	if( is_uploaded_file($_FILES['file1']['tmp_name']) ) {
		echo 'ファイルはPOST通信でアップロードされました。';
	} else {
		echo 'ファイルはPOST通信以外の方法でアップロードされました。';
	}
}

1つ目のif文ではempty関数で仮ファイルの存在を確認し、そもそもファイルがアップロードされたかを確認し、続く2つ目のif文is_uploaded_file関数を使ってPOST通信でアップロードされたかを確認しています。

今回はメッセージ出力のみですが、アップロードされたファイルに問題がなければ、ファイルをmove_uploaded_file関数を使って仮フォルダから本フォルダに移動する処理などを記載します。

is_uploaded_file関数はアップロードされた通信方式のみを調べることができるため、ファイル形式やサイズ(容量)などを別途確認する必要がある場合は、別記事「ファイルの種類(MIMEタイプ)を確認する」や「ファイルサイズを取得する」を参照ください。