フリー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
フォルダ内にファイルがアップロードされます。