OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

PostgreSQLのラージオブジェクトを使って画像を表示したい

  • すぐに回答を!
  • 質問No.194878
  • 閲覧数521
  • ありがとう数5
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 0% (0/2)

現在、PostgreSQL+PHPで画像管理DBを作成しています。
開発環境は、
Solaris8
Apache1.3.12
PostgreSQL7.1.3
PHP-4.1.0
で行っています。

今、PostgreSQLのラージオブジェクトを使用して画像(JPEG)のDBへの登録及び画面に表示するところを作っているのですが、PHPのスクリプトを作成してWeb上から動作確認を行ったところ、画面に以下の文字が表示されました。

=====表示される文字列=====
・・JFIF,,・厥hotoshop 3.08BIM,,
・'File written by Adobe
屯胖7GWgwt6Х牌范
:
=========================
多分、画像(JPEG)のバイナリがそのまま出力されていると思われます。

これは、PHPの問題なのでしょうかそれとも、DBへの登録が失敗したのでしょうか?

教えていただけないでしょうか?また、
PHP4.1.0+PostgreSQL7.1.3の環境で画像管理DBのなにかサンプルがあれば教えてください。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1
レベル11

ベストアンサー率 58% (114/195)

別にPHPの問題でもありませんし、DBへの登録が失敗しているわけでもないと思います。 HTTPでは拡張子でファイル種別をしているわけではなくサーバから帰ってくるContent-typeを見て、ファイルを識別します。なので拡張子がhtmlのjpgファイルでも拡張子がjpgのhtmlファイルでも自在ゆっくり、表示させる事が出来ます。 ytak0104の場合、多分普通にlarge objectを取得して ...続きを読む
別にPHPの問題でもありませんし、DBへの登録が失敗しているわけでもないと思います。
HTTPでは拡張子でファイル種別をしているわけではなくサーバから帰ってくるContent-typeを見て、ファイルを識別します。なので拡張子がhtmlのjpgファイルでも拡張子がjpgのhtmlファイルでも自在ゆっくり、表示させる事が出来ます。

ytak0104の場合、多分普通にlarge objectを取得してprintしただけなのでしょう。その場合、phpがデフォルトのmime-typeであるtext/htmlをかえしてしまいます。
そのためブラウザは続くデータをhtmlとして処理しようとしてバイナリデータが表示されてしまう、というわけです。

どうすれば良いのか?というとブラウザに続くデータはJpegデータである、という事を示してやれば良いのです。
つまり表示するphpファイルの頭の方でheader関数を使って

header("Content-type: image/jpeg");

としてやればブラウザは続くデータを画像として処理してくれるでしょう。
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ