プロフェッショナル×つながる×メディア
CREATIVE VILLAGE

【PHP】フォームでファイルを添付送信する方法

 

HTMLフォームでファイルを送信したい時、いつものフォームだけではできません。

いつものフォームでは、【send_mail】関数などでメールに送るだけですが、ファイルを添付して送信する場合、サーバにファイルを置くという手間が加わります。

【form.html】

[code language=”css”]
<html lang”ja”>
<head>
<meta charset”UTF-8″>
<title>HTMLフォーム:ファイル添付</title>
</head>
<body>
<form action”upload.php” method”post” enctype”multipart/form-data”>
ファイル:<br>
<input type”file” name”upfile” size”30″><br>
<input type”submit” value”アップロード” />
</form>
</body>
</html>
[/code]

HTMLフォームからファイルを受け取る場合、【upload.php】を作成します。

【upload.php】

[code language=”css”]
<html lang”ja”>
<head>
<meta charset=utf-8″>
<title>sample</title>
</head>
<body>
<?php
//↓uploadファイルの有り無し確認
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 “ファイルが選択されていません。”;
}
?>
</body>
</html>
[/code]

アップロードされたファイルの情報は【$_FILES】に格納されます。
【$_FILES】は【$_POST】や【$_GET】と同様、PHPが自動的に値をセットしてくれます。アップロードしたファイルは一時的にサーバー側に保存され、PHPプログラムの実行が終了すると削除されます。

 

入力項目の name 属性を upfile にして送信した場合、ファイルの名前は【$_FILES[“upfile”][“name”]】とすれば取得する事ができます。
また、一時的にサーバー側へ保存されたファイルの名前は【$_FILES[“upfile”][“tmp_name”]】とすれば取得する事ができます。

 

注意する点として、もしコピー先のファイルが既に存在する場合、上書きされてしまうので、被らないように連番などを加えると間違いないと思います。

 

また、upload.php と同じ場所に files フォルダを作成し、書き込み権限を与えておきます。(パーミッションを 777 に設定します。)

 

【is_uploaded_file】はファイルがアップロードされたかどうか調べる関数です。アップロードされていなければ「ファイルが選択されていません。」と表示しています。

 

また、【move_uploaded_file】はアップロードファイルを移動する関数です。
移動元のファイルは【$_FILES[“upfile”][“tmp_name”]】です。これはPHPによって一時的に作成されたアップロードファイルの名前です。
移動先は【”files/” . $_FILES[“upfile”][“name”]】です。これで files フォルダの中にオリジナルのファイル名でアップローファイルが保存されます。

chmod はパーミッションを設定する関数です。後でファイルを削除できるように、念のため 644 に設定しています。

これで【form.html】にアクセスし、アップロードボタンを押すと files フォルダ内にファイルがアップロードされます。

narumasa (なるまさ)

http://narumasa.com


フリーランスのWebクリエイターとして2001年から活動。
レコーディング・エンジニアとして職歴をスタートし、Webの勉強をすべくスクールに通い、デザイン会社のWebデザイナーへ。2001年に退職後、フリーランスのWebクリエイターとして活動しつつ、商品企画会社に入社し、企画プロデューサー・取締役を経て、再びフリーランスに。
現在はフリーランスのWebクリエイターとして数々の大企業のホームページから街の商店のホームページまで、1人で企画からディレクション、デザイン、コーディング、プログラミングまで全てを担当している。

キャリアアップセミナー

未経験からWebクリエイターを目指したい。
でも、何からはじめていいかわからない。
CREATIVE VILLEGEでは、あなたの「なりたい!」を応援するキャリアアップセミナーを開催中。受講料は無料です。
Webクリエイター向けセミナー一覧
より豊かなクリエイター人生を!
様々な知見・発見を得てください。
CREATIVE VILLAGEは、

クリエイターの生涯価値向上のため、
有益な各種コンテンツを発信しています。
BACK TO TOP クリエイター求人を探す