めも帖

「めも帖」代わりにダラダラと書いていったり、めもしたりしているだけです。

複数ファイルのアップロード

複数のファイルを選択して、アップロードしてみようという話です。以前だと、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";
}
?>