フリーPHPスクリプト配布サイト。
PHPでは、ファイルのアップロードも簡単に行うことができます。
まずは form.html を作成し、以下のHTMLを記述します。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<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"><br>
上のフォームから送信されたデータを受け取る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=Shift_JIS">
<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
フォルダを作成し、書き込み権限を与えておきます。
is_uploaded_file はファイルがアップロードされたかどうか調べる関数です。アップロードされていなければ
ファイルが選択されていません。 と表示しています。
また、move_uploaded_file はアップロードファイルを移動する関数です。
移動元のファイルは
$_FILES["upfile"]["tmp_name"]
です。これはPHPによって一時的に作成されたアップロードファイルの名前です。
移動先は "files/" .
$_FILES["upfile"]["name"] です。これで files
フォルダの中にオリジナルのファイル名でアップローファイルが保存されます。
chmod はパーミッションを設定する関数です。後でファイルを削除できるように、念のため 644
に設定しています。
これで form.html に http:// でアクセスし、アップロードボタンを押すと
files フォルダ内にファイルがアップロードされます。