- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP + MySQL で画像データ表示)
PHP + MySQLで画像データを表示する方法
このQ&Aのポイント
- PHP5 + MySQLでホームページを作成しております。画像をバイナリデータでDBに登録するとことまではできたのですが、その画像データをどうやってテンプレートに表示させるかがよく分からず、質問させていただきます。
- 現在までできている内容としては、テンプレートのフォームから画像を選択して、PHP側で$_FILEで受け取った後に画像専用のテーブルに受け取った画像のバイナリデータをinsertするところまでです。
- この後に、そのバイナリデータをテンプレート上に表示させたいのですが、その方法がよく分かりません。テーブルには画像以外にMIMEタイプを入れるカラムを用意して、MIMEタイプをもとにheaderのContent-typeを指定することで画像を表示させることができます。しかし、テーブルにinsertした画像をhtmlで表示させる場合に、画像のパスの指定方法が分からず困っています。また、表示する画像のContent-typeも適切に指定する必要があります。お分かりになる方がいらっしゃいましたら、ご教授のほどお願い致します。
- みんなの回答 (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 になります。
お礼
NARHさん 早速のご回答、ありがとうございます。 DBに登録した画像をテンプレート内に表示することができました。別にincファイル作って対応しましたが、結構苦戦しました。 また、画像アップロード・表示について調べたところ、今回のようにDBに直接登録することよりも、画像を保存するディレクトリを用意してそこに画像をアップして、DBにはファイル名だけを入れておくことが一般的でプログラムも簡単で、運用も楽だということが分かりましたので、質問をした後で申し訳ないですが、そちらの方法で対応させていただきます。 DBに画像を登録して、それを直接表示する方法を知ることができて、とても勉強になりました。 どうもありがとうございました。