file_get_contentsでデータベースに保存した画像データを表示する方法 - PHPプロ!Q&A掲示板

2579

  • 0P

file_get_contentsでデータベースに保存した画像データを表示する方法

質問日時 / 2010年3月2日 19:44    回答数 / 2件

Questioner:  hirocty  このエントリーをはてなブックマークに追加 

キーワード / symfony    MySQL    画像   

お世話になっております。
今回、symfonyフレームワークを利用したアプリケーションの開発を行っております。
その際に、画像ファイルをアップロードし、画像データをデータベースへ保存、保存した画像データを
表示する処理が必要となりました。

保存については、file_get_contentsを用いて下記のように

//アップロードされたテンポラリファイルを文字列化
$fileData = file_get_contents($file->getTempName());

とし、データベースに文字列として保存しています。
アップロードした元の画像ファイルをバイナリエディタで確認し、
それがデータベースに正しく文字列化して保存されていることを確認しています。

※元の画像データ(bin)    データベース
FF D8 FF E0 00 10... →  FFD8FFE00010...

この、文字列化した画像データを、再び画像イメージとして表示するにはどのようにすればよろしいでしょうか?
ご存じの方がいらっしゃいましたら、ご教授願えますでしょうか。

以上よろしくお願い致します。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01moetenhirocty さんこんにちは。 データーベースのカラム
┣A02shimix「文字列化」の意味がわかりません。 >※元の画像デ
┗A03magicflute2この意見は投稿者によって削除されました。

回答一覧

並び替え:

A01
answerermoeten [3月2日 20:11]

hirocty さんこんにちは。

データーベースのカラムの型は何でしょうか?

画像などバイナリを入れる際はBLOB型が便利です。

またどうしてもテキストで入れたい場合はbase64にてテキストに変換したりバイナリに変換し直したりすると便利かと思います。

この意見に回答する

ツリーへ TOPへ

A02
answerershimix [3月3日 11:24]

「文字列化」の意味がわかりません。

>※元の画像データ(bin)    データベース
>FF D8 FF E0 00 10... →  FFD8FFE00010...

「元のまま」ではないんでしょうか?それともfile_get_contents()のあとで『バイナリ文字列をbin2hex()でascii文字列に変換』しているのでしょうか?ascii文字列にするならbin2hexよりも(moetenさんも書かれていますが)base64_encodeの方が効率がいいと思いますが・・。



なお画像イメージとして表示するには、バイナリ文字列に戻してから(レスポンスヘッダとして適切なContent-typeなどをheaderで返してから)そのままprintすればいいです(ファイルで保存していればレスポンスヘッダ+readfileで済む話ですね)。

この意見に回答する

ツリーへ TOPへ

A03
answerermagicflute2 [3月3日 17:18]

この意見は投稿者によって削除されました。

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPのHTML埋め込み記述について
 このエントリーをはてなブックマークに追加 
A
$_POST["data"] == "男" ? $val = "checked" : $val = "" ; の意味は以下と同じです。 if($_POST["data"] == "男"){ $val = "checked; } e...

>>続きを読む

kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)