TODAY: YESTERDAY:
TOTAL:

Lesson11-1 〜画像のアップロード〜
■Lessonを終えると以下のようなPHPプログラムが作れます。


Lessonサンプル

まずは作業用のフォルダを作成しましょう。「C:\Program Files\Apache Group\Apache2\htdocs」に「lesson11」というフォルダを作成してください。
さらに、Lesson11フォルダの中に「img」という名前の空のフォルダを作成してください。
さらに、ソノimgフォルダの中に「data.txt」という空のファイルを作成してください。

■What's

さてさて、久々にLessonを書いてみようと思います。今回は画像をアップロードするプログラムです。画像を同じ大きさにして並べて表示します。さらに、あまりデカイサイズをアップロードされても困るので一定のサイズ以上はアップロードできないようにします。

■サンプルプログラム

テキストエディタに以下のように書き込んで、「lesson11」フォルダの中に「sample01.php」として保存しましょう。

<?php
$img_name = $_FILES["img_path"]["name"];
$img_size = $_FILES["img_path"]["size"];
$img_type = $_FILES["img_path"]["type"];
$img_tmp = $_FILES["img_path"]["tmp_name"];


if($_REQUEST["up"] != ""){

if($img_tmp != "" and $img_size <= 30000){

$img_message = "名前は: $img_name <br>サイズは: $img_size <br>MIMEタイプは: $img_type <br>一時的に保存されているパスは: $img_tmp <br>";

}else{

$size_error = "サイズが大きすぎます。ファイルサイズは30キロバイト以下です。";

}
}
?>

<html>
<head>
<title>画像アップロード</title>
</head>
<body>
<h1>画像アップロード</h1>(サイズは30キロバイト以下)
<form name="form" action="<?php print $_SERVER['PHP_SELF']; ?>" method="POST"
ENCTYPE="MULTIPART/FORM-DATA">
<input name="img_path" type="file" size="40">
<input name="up" type="submit" value="アップロード"><hr>
<font color="#FF0000"><strong><?= $size_error ?></font></strong><?= $img_message ?>
</form>
</body>
</html>

できましたら、ブラウザのアドレスに
http://localhost/lesson11/sample01.php」と入力してアクセス!!
ロリポップ!
さくらのレンタルサーバ
などのレンタルサーバー使ってる方はlocalhostのところはドメイン名になります。
(簡単に安くネットショップを開きたい方はこちら!)

さて、如何でしょうか?ちゃんと表示されましたでしょうか?

■解説

<input name="img_path" type="file" size="40">

まずは、ファイルをアップロードするinputタグのTYPE属性に「file」と書いてやります。そうするとテキストボックスと参照ボタンが自動で作成されます。参照ボタンを押すと、どれ選ぶんだよ?って感じでウィンドウが開きます。

ENCTYPE="MULTIPART/FORM-DATA

次に、コレ。<form>の中に書いてあるわけですがコレは、フォーム内にあるFILE要素で指定されたファイルが実際にアップロードされる。らしいです。とにかく、ファイルアップロードするなら書いとけよ!って解釈でいいかと思います。

  1. $img_name = $_FILES["img_path"]["name"];
  2. $img_size = $_FILES["img_path"]["size"];
  3. $img_type = $_FILES["img_path"]["type"];
  4. $img_tmp = $_FILES["img_path"]["tmp_name"];

さて、本日のメインってとこですかね。これはアップロードされるファイルの情報を取得しています。今まではテキストボックスにナニが入力されていたか?といのを取得するには「$_REQUEST」を使っていましたが、ファイルを扱う場合は「$_FILES」を使用するわけですね。「["img_path"]」ってのはname属性でつけた名前になります。一番上から

  1. ファイルの名前を取得
  2. ファイルのサイズを取得
  3. ファイルのMIMEタイプを取得
  4. サーバー上に一時的に保存されているパス

と、言った感じです。それを変数に格納しているという形になります。ですからコレをprintとかで出力すればアップロードしたファイルの情報がわかるわけデスナ。

if($img_tmp != "" and $img_size <= 30000){

ここまで来たらもうカンタン。わかりやすく分解してっと、

$img_tmp ! = ""

ファイルがアップロードされているなら。ファイルがアップロードされたら。

$img_size <= 30000

コレは、アップロードだれたファイルのサイズが30000バイト(30キロバイト)以下ならば。ということになります。andを使っているので、両方の条件がtrueなら実行しろ。ということになります。実行されるのは、先ほど変数に格納したアップロードしたファイルの情報を出力しています。条件が満たされていなければ、elseへ行き、「ファイルサイズが大きすぎます。ファイルサイズは30キロバイト以下です。」と表示させます。

さて、如何でしたでしょうか?アップロードしたのはどうやってみるんだYOってナイスな突込みが入りそうですが、ご安心ください。次のレッスンでかまします。一気に書くのもいいんですが、やっぱり少しずつ段階を経てやったほうがいいかなぁと思った今日この頃でした。ハイ。ということで、次は実際にアップロードされたものを表示します。

このLessonが役に立った方は、1クリックお願いします!PHPランキング

■スポンサードリンク