PHP | HTMLフォームでの画像のPOST送信と受け取り方法

2023-10-08PHP フォーム,PHP

PHP | HTMLフォームでの画像のPOST送信と受け取り方法

HTMLフォームでの画像のPOST送信する方法とPHPで受け取る方法、サンプルコードを紹介しています。

HTMLのフォームで画像をPOST送信する方法

HTMLのフォームで画像ファイルをPOST送信するには、<form>タグに「enctype="multipart/form-data"」を記述することでPHPに「input type="file"」としてファイルを送信する事が可能になります。

<form action="post.php" method="POST" enctype="multipart/form-data">
	<p><input type="file" name="image"></p>
	<p><input type="submit" id="submit" value="送信" /></p>
</form>

送信した画像ファイルをPHPで受け取る方法

HTMLのFORMで送信した画像ファイルをPHPで受け取るには「$_FILES['image’]」とする事で送信されたファイルを受け取る事が可能です。

サンプルコード中の $_FILES['image’] の「image」は送信するフォームパーツの「name」属性なので、送信するHTMLに合わせて変更します。

if($_FILES['image']['name']){
	// ファイル名を表示するる
	echo $_FILES['image']['name'];
}

$_FILESで受け取れる画像ファイルの情報

$_FILES['xxxxx’]['name’]の他にも以下の情報が受け取られていて利用可能です

$_FILES['xxxxx’]['name’]受信したファイル名
$_FILES['xxxxx’]['type’]受信したファイルのファイルタイプ(拡張子)
$_FILES['xxxxx’]['size’]受信したファイルのバイト単位のサイズ
$_FILES['xxxxx’]['tmp_name’]受信したファイルのサーバー上で保存されているテンポラ リファイルの名前
$_FILES['xxxxx’]['error’]受信したファイルによるエラー情報

複数の画像を同時に送受信する方法

複数の画像を同時に送受信するには、送信元「name」属性の値を送信可能数分作成するか、同じ値を配列型で記述して送信する様に設定します。

<form action="post.php" method="POST" enctype="multipart/form-data">
	<p><input type="file" name="image[]"></p>
	<p><input type="file" name="image[]"></p>
	<p><input type="file" name="image[]"></p>
	<p><input type="submit" id="submit" value="送信" /></p>
</form>

上記HTMLフォームのように複数の画像を配列データとして送信した場合、PHP側で受け取った際にforeach()文で繰り返し処理が利用できます。

foreach ($_FILES["image"] as $key => $value) {
	// ファイル名を表示するる
	echo $value['name'];
}

PHP フォーム,PHP

Posted by Yousuke.U