フリーPHPスクリプト配布サイト。
PHPでは、ファイルのアップロードも簡単に行うことができます。
まずは form.html を作成し、以下のHTMLを書きます。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>sample</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
ファイル:<br />
<input type="file" name="upfile" size="30" /><br />
<br />
<input type="submit" value="アップロード" />
</form>
</body>
</html>
これをブラウザで表示すると、以下のように表示されます。

form タグの method を post にし、enctype を multipart/form-data にすると、ファイルをアップロードすることができます。
<form action="regist.php" method="post" enctype="multipart/form-data"></form>
input タグの type に file を指定すると、ファイル参照フォームを表示する事ができます。name で指定したキーワードを基に、PHPでデータを受け取ります。
<input type="file" name="upfile" size="30" />
上のフォームから送信されたデータを受け取るPHPプログラムを作成します。
アップロードされたファイルの情報は $_FILES に格納されます。$_FILES は $_POST や $_GET と同様、PHPが自動的に値をセットしてくれる連想配列です。また、アップロードしたファイルは一時的にサーバー側に保存され、PHPプログラムの実行が終了すると削除されます。
入力項目の name 属性を upfile にして送信した場合、ファイルの名前は $_FILES["upfile"]["name"] とすれば取得する事ができます。
また、一時的にサーバー側へ保存されたファイルの名前は $_FILES["upfile"]["tmp_name"] とすれば取得する事ができます。
前に挙げたサンプルフォームからファイルを受け取る場合、form.html と同じフォルダに upload.php (form の action で指定したファイル。)を作成し、以下の内容を記述します。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>sample</title>
</head>
<body>
<p><?php
if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) {
if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) {
chmod("files/" . $_FILES["upfile"]["name"], 0644);
echo $_FILES["upfile"]["name"] . "をアップロードしました。";
} else {
echo "ファイルをアップロードできません。";
}
} else {
echo "ファイルが選択されていません。";
}
?></p>
</body>
</html>
また、upload.php と同じ場所に files フォルダを作成し、書き込み権限を与えておきます。(FTPソフトなどでパーミッションを 777 に設定します。Windowsで動作させている場合は設定不要です。)
is_uploaded_file はファイルがアップロードされたかどうか調べる関数です。アップロードされていなければ ファイルが選択されていません。 と表示しています。
また、move_uploaded_file はアップロードファイルを移動する関数です。
移動元のファイルは $_FILES["upfile"]["tmp_name"] です。これはPHPによって一時的に作成されたアップロードファイルの名前です。
移動先は "files/" . $_FILES["upfile"]["name"] です。これで files フォルダの中にオリジナルのファイル名でアップローファイルが保存されます。
chmod はパーミッションを設定する関数です。後でファイルを削除できるように、念のため 644 に設定しています。
これで form.html に http:// でアクセスし、アップロードボタンを押すと files フォルダ内にファイルがアップロードされます。