⇒[[山内の授業のページ/11春/プロジェクト]]

アクセス数 &counter();  このページの最終更新 &lastmod();

***ファイルのアップロードのサンプル [#t3ed2c85]
アップロードのサンプルコード(2011バージョン=ファイルをcreateせず、
画像データをデータベース内にバイナリデータとして保存する方法)

uptest.htmlファイル
 <html>
 <body>
 
 <form enctype="multipart/form-data" action="uploadaction.php" method="POST">
    <!-- MAX_FILE_SIZE はファイルフィールド用に必須です -->
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    <!-- input 要素の名前が $_FILES 配列での名前となります -->
    <input name="uptest" type="file" />
    <input type="submit" value="ファイルを送信" />
 </form>
 </body>
 </html>

uploadaction.phpファイル
 <?php
   print("<html><body>");
   $fname = $_FILES['uptest']['tmp_name'];    //この情報は決めうち
   $foriginalname = $_FILES['uptest']['name'];
 
   $content = file_get_contents($fname);
 
   include(".ht_mytest");
   $MyLink = mysql_connect($MySQLHost, $MySQLUserName, $MySQLPassword);
   mysql_select_db($MySQLDatabase, $MyLink);
 
   $user = "Taro";     //この情報は本番ではどこからか持ってくること
   $content2 = mysql_real_escape_string($content);   // このおまじないは必須
   $MyQuery = "INSERT into blubtest values ('$title','$content2','$user')";
   $MyResult = mysql_query($MyQuery, $MyLink);
 
   $MyQuery = "SELECT * FROM blubtest";    //テーブル名はblubtestとしてある
   $MyResult = mysql_query($MyQuery, $MyLink);
 
   while ($MyRow = mysql_fetch_array($MyResult, MYSQL_ASSOC)) {
     $title = $MyRow["title"];
     $name = $MyRow["name"];
     print("<hr>\n" . $title . " | " . $name . "<br>\n");
     print('<img src="show.php?title=' . $title . '">');  //show.phpは別途定義
   }
 
   mysql_free_result($MyResult);
   mysql_close($MyLink);
 
   print("</body></html>");
 ?>

show.phpファイル~
\<img>タグのsrc部分に書かれるファイル名
これは<img>タグのsrc部分に書かれるファイル名で、普通ならsrc="xxx.gif"とかイメージファイルのファイル名を書くのだが、ここでは「イメージデータを(データベースから読み出して端末へ送り出してくれるPHPプログラム」を置く。ちなみに、show.phpの引数として、show.php?title=ホゲホゲのように、画像データにつけた「タイトル」を渡す。

 <?php
   // MySQLから画像データの入った列を読み込む
   $title = $_GET['title'];
 
   include(".ht_mytest");
   $MyLink = mysql_connect($MySQLHost, $MySQLUserName, $MySQLPassword);
   mysql_select_db($MySQLDatabase, $MyLink);
   $query = "select * from blubtest where title='" . $title . "'";  //テーブル名blubtest、属性名title
   $result = mysql_query($query);
   $row = mysql_fetch_row($result);
 
   // 画像ヘッダとしてgifを指定 (JPEGの時は image/jpeg を指定すること)
   print(header("Content-Type: image/gif"));
   // バイナリデータを直接表示。DBの表の要素1(=2番目)のカラム(属性)
   print $row["1"];
 ?>

注意: 下から4行目のところでContent-Type: image/gifを送出しているため、GIFファイルに限定される。JPEGファイルを描画したければimage/jpegと指定する。~
データベース中のバイナリデータの種類を区別して、どちらでも描画できるようにするためには、データベースに画像を登録するときにどちらの形式であるか(gifかjpegか)を書いておくフィールドを設け、書いておく。描画するときにそれを読み出して、gifかjpegかに応じて、異なるheaderを送り出すようにする必要がある。
⇒[[山内の授業のページ/11春/プロジェクト]]
⇒[[山内の授業のページ/08春/プロジェクト]]

アクセス数 &counter();  このページの最終更新 &lastmod();

***ファイルのアップロードのサンプル [#t3ed2c85]
アップロードのサンプルコード(2011バージョン=ファイルをcreateせず、
画像データをデータベース内にバイナリデータとして保存する方法)

uptest.htmlファイル
 <html>
 <body>
 
 <form enctype="multipart/form-data" action="uploadaction.php" method="POST">
    <!-- MAX_FILE_SIZE はファイルフィールド用に必須です -->
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    <!-- input 要素の名前が $_FILES 配列での名前となります -->
    <input name="uptest" type="file" />
    <input type="submit" value="ファイルを送信" />
 </form>
 </body>
 </html>

uploadaction.phpファイル
 <?php
   print("<html><body>");
   $fname = $_FILES['uptest']['tmp_name'];    //この情報は決めうち
   $foriginalname = $_FILES['uptest']['name'];
 
   $content = file_get_contents($fname);
 
   include(".ht_mytest");
   $MyLink = mysql_connect($MySQLHost, $MySQLUserName, $MySQLPassword);
   mysql_select_db($MySQLDatabase, $MyLink);
 
   $user = "Taro";     //この情報は本番ではどこからか持ってくること
   $content2 = mysql_real_escape_string($content);   // このおまじないは必須
   $MyQuery = "INSERT into blubtest values ('$title','$content2','$user')";
   $MyResult = mysql_query($MyQuery, $MyLink);
 
   $MyQuery = "SELECT * FROM blubtest";    //テーブル名はblubtestとしてある
   $MyResult = mysql_query($MyQuery, $MyLink);
 
   while ($MyRow = mysql_fetch_array($MyResult, MYSQL_ASSOC)) {
     $title = $MyRow["title"];
     $name = $MyRow["name"];
     print("<hr>\n" . $title . " | " . $name . "<br>\n");
     print('<img src="show.php?title=' . $title . '">');  //show.phpは別途定義
   }
 
   mysql_free_result($MyResult);
   mysql_close($MyLink);
 
   print("</body></html>");
 ?>

show.phpファイル~
これは<img>タグのsrc部分に書かれるファイル名で、普通ならsrc="xxx.gif"とかイメージファイルのファイル名を書くのだが、ここでは「イメージデータを(データベースから読み出して端末へ送り出してくれるPHPプログラム」を置く。ちなみに、show.phpの引数として、show.php?title=ホゲホゲのように、画像データにつけた「タイトル」を渡す。

 <?php
   // MySQLから画像データの入った列を読み込む
   $title = $_GET['title'];
 
   include(".ht_mytest");
   $MyLink = mysql_connect($MySQLHost, $MySQLUserName, $MySQLPassword);
   mysql_select_db($MySQLDatabase, $MyLink);
   $query = "select * from blubtest where title='" . $title . "'";  //テーブル名blubtest、属性名title
   $result = mysql_query($query);
   $row = mysql_fetch_row($result);
 
   // 画像ヘッダとしてgifを指定 (JPEGの時は image/jpeg を指定すること)
   print(header("Content-Type: image/gif"));
   // バイナリデータを直接表示。DBの表の要素1(=2番目)のカラム(属性)
   print $row["1"];
 ?>

注意: 下から4行目のところでContent-Type: image/gifを送出しているため、GIFファイルに限定される。JPEGファイルを描画したければimage/jpegと指定する。~
データベース中のバイナリデータの種類を区別して、どちらでも描画できるようにするためには、データベースに画像を登録するときにどちらの形式であるか(gifかjpegか)を書いておくフィールドを設け、書いておく。描画するときにそれを読み出して、gifかjpegかに応じて、異なるheaderを送り出すようにする必要がある。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS