2013-12-13 24 views
28

データベースのBLOB列に格納されているイメージを表示しようとしています。PHPの表示イメージMySQLからのBLOB

header("Content-Type: image/jpeg"); 
echo $image; 

クロムを注意してください表示されます。

私はデータに何の変換を実行しないと、次の(その出力のみである以下のスクリプトから)でそれを表示するSELECTでデータベースからデータをフェッチ画像の正しいサイズとしてのコンテンツサイズ、正しいMIMEタイプ(image/jpeg)ヘッダーとアイブがデータベースのブロブが正しいことが確認される前に何もエコーアウトしていません。また、<?php ?>タグの前後に後続の空白もありません。

chrome/IEは画像アイコンを表示しますが、画像自体は表示しません。何か案は?

EDIT:画像のようなデータベースから得ている:

$sql = "SELECT * FROM products WHERE id = $id"; 
$sth = $db->query($sql); 
$row = $sth->fetch(); 
$image = $row['image']; 

のvar_dump($の画像)が得られます。これは私がブロブからの画像を表示するために使用するものである

string 'ÿØÿà�JFIF��x�x��ÿá�ZExif��MM�*�����������J��������Q�������Q������tQ������t�����† ��±ÿÛ�C�  

ÿÛ�CÿÀ�_"�ÿÄ����������� 
ÿÄ�µ���}�!1AQa"q2‘¡#B±ÁRÑð$3br‚ 
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³ ´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ��������'... (length=60766) 
+0

「$画像」を構成するものを投稿してください(Ieクエリなど) – Machavity

+0

@ user2732663以下の回答を試しましたか? –

+0

'$ image'をバイナリファイルに保存しようとしましたが、おそらくDBのデータが壊れていますか? –

答えて

85

お試しください。ブロブ

$db = mysqli_connect("localhost","root","","DbName"); //keep your db name 
$sql = "SELECT * FROM products WHERE id = $id"; 
$sth = $db->query($sql); 
$result=mysqli_fetch_array($sth); 
echo '<img src="data:image/jpeg;base64,'.base64_encode($result['image']).'"/>'; 

から画像にアクセスするためのDB

$db = mysqli_connect("localhost","root","","DbName"); //keep your db name 
$image = addslashes(file_get_contents($_FILES['images']['tmp_name'])); 
//you keep your column name setting for insertion. I keep image type Blob. 
$query = "INSERT INTO products (id,image) VALUES('','$image')"; 
$qry = mysqli_query($db, $query); 

に挿入するための

は、それはあなたを助けることを願っています。

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

+0

Ajaxの呼び出しからmysqlクエリのユーザID( "SELECT * FROM products WHERE id = $ id")を取得した例を挙げることができますか?私は本当に感謝しています。 – diank

+0

あなたは人生の救世主です –

11

echo '<img src="data:image/jpeg;base64,'.base64_encode($image->load()) .'" />'; 
+0

は$ imageのPHPオブジェクトですか? –

+0

ありがとうございました – Pun

+0

チャームのように働きました! @ProgrammingNewbあなたは$ imageに画像データ型を置くことができます。これは$ row ["photo"]のPHP変数です。 –

0

私はこのように私のコードを更新すると仮定し、私のBLOBフィールド/列のコンテンツのバリウス型を格納する必要があるので: パントマイムは、どんな種類の画像、テキスト、単語になります

echo "data: $mime" $result['$data']"; 

のデータはブロブの列内容です

関連する問題