HOME >> Tips >> PHP

ひとつのページにファイルアップロードを複数設置する方法

2017/12/10
文書番号:20796


ひとつのページにファイルアップロードを複数設置し、PHP で取得・処理する方法です。


file-upload.html


<form action="file-upload.php" method="post" enctype="multipart/form-data">
  ファイル1:
  <input name="userfile[]" type="file" /><br />
  ファイル2:
  <input name="userfile[]" type="file" /><br />
  <input type="submit" value="アップロード" />
</form>

file-upload.php

//ファイルが指定されているかチェック
if (isset($_FILES['userfile']['name']) && count($_FILES['userfile']['name']) > 0) {
  //アップロードされたファイル数分ループする
  for ($i=0; $i<count($_FILES['userfile']['name']); $i++) {

    //ファイルの拡張子を取得する(必要な場合)
//    $file_ext = pathinfo($_FILES["userfile"]["name"][$i], PATHINFO_EXTENSION);

    //アップロードされたファイルを保存する
    if (is_uploaded_file($_FILES["userfile"]["tmp_name"][$i])) {

      if(move_uploaded_file($_FILES["userfile"]["tmp_name"][$i], "./images/".$_FILES["userfile"]["name"][$i])) {

        echo $_FILES["userfile"]["name"][$i] . "をアップロードしました。";
      } else {
        echo "ファイルをアップロードできません。";
      }
    } else {
      echo "ファイルが選択されていません。";
    }
  }
}

※上記サンプルは最低限のコードのみしか記載していません。
エラー処理などは実行環境に合わせて実装してください。

【参考情報】

[php]複数ファイルのアップロード
http://php.net/manual/ja/features.file-upload.multiple.php