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'];
}
ディスカッション
画像貼り付けに関して、バグがあるのにも関わらず普通に紹介してますが、不具合が起きなかったわけありませんよね?
試さずもせずに記事を書いているということが発覚しましたね!
今後はきちっと検証した上で記事にして頂けるよう願う!
この記事のせいで無駄な時間を半日かかりました。
反省して下さい!