アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHP5 + MySQLでホームページを作成しております。

画像をバイナリデータでDBに登録するとことまではできたのですが、その画像データをどうやってテンプレートに表示させるかがよく分からず、質問させていただきます。

環境は下記の通りです。
=======================
サーバ:CentOS5.4(i386版)
※Apache、PHP5、MySQL、phpMyAdminはインストール済み
使用言語XHTML、CSS、JavaScript、PHP、MySQL(それぞれ別ファイルで作成しております)
=======================

現在までできている内容としては、
テンプレートのフォーム
<input type="file" name="upload_img"></input>
から画像を選択して、PHP側で$_FILEで受け取った後に
画像専用のテーブル
カラム名:USER_IMG
データ型:MIDIUMBLOB
に受け取った画像のバイナリデータをinsertするところまでです。

この後に、そのバイナリデータをテンプレート上に表示させたいのですが、その方法がよく分かりません。

この質問をする事前に、参考になりそうなサイトをいくつか調べていて、

・テーブルには画像以外にMIMEタイプを入れるカラムを用意して、MIMEタイプをもとにheaderのContent-typeを指定する
・Content-type: text/html; でも一応画像を表示させることはできる

ということは分かりました。

ですが、今作っているテーブルにinsertした画像を表示させるhtmlは
Content-type: text/html
で作成しており、そのテンプレート内に
<img src="画像パス/画像名.gif"></img>
といった形で表示させたい場合に、画像のパスはどうやって指定してあげたらよいのか分かりません。
また、そのページのContent-typeは
Content-type: text/html
ではなく、MIMEタイプから対応したContent-typeにした方が良いのでしょうか?

お分かりになる方いらっしゃいましたら、ご教授のほどお願い致します。

A 回答 (1件)

ブラウザの動きを考えてみてください。



HTMLで記述されたページ
http://example.com/aaa.php
を取得する。この際HTMLを返すので Content-type は text/html です。

その後、そのHTMLをパースしレンダリングするのですが、その際に <img src=/img/example.jpg" /> があると、
別途リクエスト http://example.com/img/example.jpg を投げます。

このURL、この例で言えば img の場合に、ファイル名の画像をDBから取得する。aaa.php とは別のプログラムが必要になります。
(別にaaa.php に別の機能として実装してもいいですが)

この画像表示用のプログラムが返すのは画像データですが、その際のヘッダが画像の Content-type になります。
    • good
    • 0
この回答へのお礼

NARHさん

早速のご回答、ありがとうございます。

DBに登録した画像をテンプレート内に表示することができました。別にincファイル作って対応しましたが、結構苦戦しました。

また、画像アップロード・表示について調べたところ、今回のようにDBに直接登録することよりも、画像を保存するディレクトリを用意してそこに画像をアップして、DBにはファイル名だけを入れておくことが一般的でプログラムも簡単で、運用も楽だということが分かりましたので、質問をした後で申し訳ないですが、そちらの方法で対応させていただきます。

DBに画像を登録して、それを直接表示する方法を知ることができて、とても勉強になりました。

どうもありがとうございました。

お礼日時:2011/03/15 13:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!