HTML5のmuliple属性をつけた複数ファイルのアップロードをPHPで受け止めてみた。(メモ)
クライアント側。inputにmultiple属性をつけてるのとnameを配列にしている。
<form action="uplod.php" method="POST" enctype="multipart/form-data"> <input type="file" name="file[]" multiple> <input type="submit" value="Upload" /> </form>
鯖側で$_FILEをログに吐いてみる。
Array ( [file] => Array ( [name] => Array ( [0] => Penguins.jpg [1] => Tulips.jpg ) [type] => Array ( [0] => image/jpeg [1] => image/jpeg ) [tmp_name] => Array ( [0] => /tmp/phpV8xnID [1] => /tmp/phpsS56kp ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 777835 [1] => 620888 ) ) )
PHPで受け止める。
<?php while(list($key,$value) = each($_FILES['file']['name'])) { $file_name = $_FILES['name'][$key]; $file_tmp_name = $_FILES['tmp_name'][$key]; $file_size = $_FILES['size'][$key]; $file_error = $_FILES['error'][$key]; }
ループでまわしている中でmove_uploaded_fileを行えば複数保存が可能。
chromeとfirefoxとIEで試してみました。
IEではファイルはひとつしか選択できませんでした。