PHPでファイルアップロード

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>

これを受け取る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>

アップロードされたファイルの情報は、PHPが自動で用意する $_FILES という連想配列の変数に格納されます。たとえば、ファイル名は$_FILES[“filename”][“name”]で参照できます。

アップロードされたファイルは一時的にサーバー側に$_FILES[“filename”][“tmp_name”] で参照できるファイル名で保存されます。、PHPプログラムの実行が終了すると削除されますから、サーバ側で保存しておくためには、プログラムの中で保存処理をする必要があります。

関連書籍:

同じタグの記事: PHP
同じカテゴリの記事: Program
関連書籍: PHP