2013-12-13 3 views
28

데이터베이스의 BLOB 열에 저장된 이미지를 표시하려고합니다.PHP 표시 이미지 MySQL의 BLOB

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

크롬을 참고 표시됩니다 :

나는 데이터에는 변환을 수행하지 않고 다음 (그의 유일한 출력 다음 스크립트에서)를 함께 표시하려면 SELECT와 데이터베이스에서 데이터를 가져 이미지 크기 및 올바른 MIME 형식 (image/jpeg)으로 콘텐츠 크기 헤더와 ive가 데이터베이스의 BLOB가 올바른지 확인하기 전에 아무 것도 울리지 않습니다. <?php ?> 태그 앞이나 뒤에 공백 문자가 없습니다.

크롬/IE는 이미지 아이콘을 표시하지만 이미지 자체는 표시하지 않습니다. 어떤 아이디어?

편집 : 이미지는 다음과 같은 데이터베이스에서를 받고 있습니다 :

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

위해서 var_dump ($ 이미지) 제공 : 이것은 BLOB 이미지를 표시하는 데 사용할 것입니다

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

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

무엇이'$ image'를 구성 할지를 물어보십시오 (즉, 쿼리 등) – 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 쿼리 ("SELECT * FROM products WHERE id = $ 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 필드/열에서 내용의 varius 유형을 저장해야하기 때문에,이 같은 내 코드를 업데이트한다고 가정

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

은 여기서 마임이 어떤 종류, 텍스트, 단어의 이미지가 될 수 문서, 텍스트 문서, PDF 문서 등입니다. 데이터의 형식은 blob입니다.