PHPでファイルアップロードをするのは簡単です。
まず、次のようなform.htmlを作成します。
$ cat form.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>fileupload sample</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
file name:
<input type="file" name="filename" size="20" /><br />
<input type="submit" value="upload" />
</form>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>fileupload sample</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
file name:
<input type="file" name="filename" size="20" /><br />
<input type="submit" value="upload" />
</form>
</body>
</html>
これを受け取るupload.phpは次の通りです。form.htmlと同じ場所に用意します。また、filesディレクトリを同じ場所に用意して、apacheプロセスが書き込めるようにしておきます。
$ cat upload.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>fileupload result</title>
</head>
<body>
<p><?php
if (is_uploaded_file($_FILES["filename"]["tmp_name"])) {
if (move_uploaded_file($_FILES["filename"]["tmp_name"], "files/" . $_FILES["filename"]["name"])) {
chmod("files/" . $_FILES["filename"]["name"], 0644);
echo $_FILES["filename"]["name"] . " uploaded.";
} else {
echo "fail";
}
} else {
echo "select file";
}
?></p>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>fileupload result</title>
</head>
<body>
<p><?php
if (is_uploaded_file($_FILES["filename"]["tmp_name"])) {
if (move_uploaded_file($_FILES["filename"]["tmp_name"], "files/" . $_FILES["filename"]["name"])) {
chmod("files/" . $_FILES["filename"]["name"], 0644);
echo $_FILES["filename"]["name"] . " uploaded.";
} else {
echo "fail";
}
} else {
echo "select file";
}
?></p>
</body>
</html>
アップロードされたファイルの情報は、PHPが自動で用意する $_FILES という連想配列の変数に格納されます。たとえば、ファイル名は$_FILES[“filename”][“name”]で参照できます。
アップロードされたファイルは一時的にサーバー側に$_FILES[“filename”][“tmp_name”] で参照できるファイル名で保存されます。、PHPプログラムの実行が終了すると削除されますから、サーバ側で保存しておくためには、プログラムの中で保存処理をする必要があります。
関連書籍: