アップロードするファイル名を入力するテキストボックスのname属性を配列にすると、一度の複数のファイルをアップロードする仕組みを作れます。この例では、4つまでのファイルを一度にアップロードできます。単一ファイルのアップロードと異なる点は、主として次の3点です。
①HTMLフォームの<input>タグのname属性を「upload[]」のような配列にする
②受け取り側のPHPスクリプトでは、「$_FILE["uploadfile"]["name"][0]や「$_FILE["uploadfile"]["name"][1]のような多次元のインデックス指定によって、個々のアップロードファイル情報を取り出す
③ループによって配列のインデックスを操作し、4つのアップロードを順番に処理する
<?php header("Content-type: text/html; charset=utf-8"); if (isset($_POST["btnExec"])) { //実行ボタンがクリックされたとき //4つのアップロードファイルを処理するループ for ($cnt = 0; $cnt < 4; $cnt++) { //エラーメッセージを初期化 $errmsg = ""; if(strlen($_FILES["uploadfile"]["name"][$cnt]) > 0 ) { //画像ファイルがアップロードされたとき //アップロードされたファイルの情報を取得 $fileinfo = pathinfo($_FILES["uploadfile"]["name"][$cnt]); //ファイルの拡張子を取得して大文字に変換 $fileext = strtoupper($fileinfo["extension"]); if ($_FILES["uploadfile"]["size"][$cnt] > 102400) { //アップロードファイルのサイズ上限をチェック $errmsg .= "ファイルサイズが大きすぎます! 100KB以下にしてください。<br>"; } elseif ($_FILES["uploadfile"]["size"][$cnt] == 0) { //アップロードファイルのサイズ下限をチェック $errmsg .= "ファイルが存在しないか空のファイルです!<br>"; } elseif ($fileext != "GIF" and $fileext != "JPG" ) { //アップロードファイルの拡張子をチェック $errmsg .= "対象ファイルはGIFまたはJPGのみです!<br>"; } else { //アップロードされたファイルを正規に配置するパスを設定 //ここではimagesディレクトリの下に"upf_"+元の名前で配置 $movetofile = "images/upf_" . $_FILES["uploadfile"]["name"][$cnt]; //アップロードされたテンポラリファイルを正規の場所に移動 if (! move_uploaded_file($_FILES["uploadfile"]["tmp_name"][$cnt], $movetofile)) { $errmsg .= "ファイルのアップロードに失敗しました。<br>"; } } if ($errmsg == "") { //正常にアップロードされたときはその画像を表示 echo $_FILES["uploadfile"]["name"][$cnt]; echo "<img src='$movetofile'><br>"; } else { //いずれかのエラーがあったとき //エラーメッセージを表示 echo $errmsg . "<br><br>"; //アップロードされたテンポラリファイルを削除 @unlink($_FILES["uploadfile"]["tmp_name"][$cnt]); } } } echo "<br><br>"; } ?> <!DOCTYPE HTML> <html lang="ja-JP"> <head> <meta charset="UTF-8"> <title></title> </head> <body> アップロードする画像ファイルを指定して[実行]ボタンをクリックしてください。 <form action="<?=$_SERVER["PHP_SELF"]?>" method="POST" enctype="multipart/form-data"> <input type="file" name="uploadfile[]" size="60"><br> <input type="file" name="uploadfile[]" size="60"><br> <input type="file" name="uploadfile[]" size="60"><br> <input type="file" name="uploadfile[]" size="60"><br> <br> <input type="submit" name="btnExec" value="実行"> </form> </body> </html>