PHPプログラミング

レシピ

ファイル / ディレクトリ

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

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

この記事のポイント

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

目次

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

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

コード例

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

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

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

使用例

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

コード例

// ファイルがアップロードされたか確認
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タイプ)を確認する」や「ファイルサイズを取得する」を参照ください。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。