複数ファイルのアップロード
複数のファイルを選択して、アップロードしてみようという話です。以前だと、flashを使う、というのが定番だったように思うのですが、実際に試したことがないままでした。
HTML5には、複数のファイルを選択する「multiple」という属性が出来ました。IEについてはさておき、Webkit系、Firefox系でも使えるようです。
ということで、試しにやってみることにしました。
PHPの場合
ポイントは、
- name属性を配列風に記載
- アップロードできる制限を忘れずに変更(複数で選ぶとアップロードの制限を超えやすいかも)
です。
簡単なんですが、ファイルのアップロード状況とかを見てみたいですね。
ということで、この先は、HTML5/JavaScriptがメインとなります
ソース(PHP)
<!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="UTF-8"> <title>FileUp</title> </head> <body> <h1>FileUp</h1> <form action="./index.php" method="post" enctype="multipart/form-data"> <p><input type="file" name="file_path[]" id="file_path[]" multiple /></p> <p><input type="submit" value="submit" /></p> </form> </body> </html> <?php $uploads_dir = '/usr/htdocs/'; //var_dump($_FILES); if($_FILES['file_path']) { //echo "YES"; foreach($_FILES['file_path']['tmp_name'] as $key=>$value) { $file_name = $_FILES['file_path']['name'][$key]; $tmp_name = $_FILES['file_path']['tmp_name'][$key]; //move_uploaded_file($tmp_name, $uploads_dir . $key . "_" . $file_name); move_uploaded_file($tmp_name, $uploads_dir . $file_name); } }else{ //echo "NO"; } ?>