2014-05-23 2 views
0

mongodb에서 가져 오는 이미지를 브라우저에서 보려고합니다. 이미지를 올바르게 저장하고 genghis.php를 사용하여 완벽하게 다운로드 할 수 있지만 getBytes() 또는 getResource()를 사용하여 내 코드를 사용하여이 코드를로드하려고 할 때마다 결과는 다음과 같은 바이트 데이터 만 반환합니다.mongoDb에서 이미지로드 실패

HDR¿£Ðß$iUßoÛT>‰oR¤? XG‡ŠÅ¯US[¹­ÆI“¥íJ¥éØ*$ä:7‰©Û鶪O{7ü@ÙH§kk?ì<Ê»øÎí¾kktüqóÝ 

<?php 

// Config 
$dbhost = 'localhost'; 
$dbname = 'dbzuhra'; 
$colname = 'testData'; 

// Connect to test database 
$m = new Mongo("mongodb://$dbhost"); 
$db = $m->$dbname; 
$getGrid = $db->getGridFS(); 

$image = $getGrid->findOne(array('filename'=>'final_design.png')); 

header('Content-type: image/png;'); 
$stream = $image->getResource(); 
while (!feof($stream)) { 
    echo fread($stream, 8192); 
} 

?> 

이런 일이 이유에 대한 설명이있다 :

여기에 내가 이미지를 검색하는 데 사용하는 코드는?

+0

스트림 리소스를 읽는 대신 파일 객체에서 getBytes를 수행하면 어떻게 될까요? 그냥 시험 할 – Sammaye

+0

@Sammaye : 불행히도, 여전히 동일한 결과가있다 –

+0

나는 이것 또한 어느 쪽과도 관련이 있다고 생각한다. 이미지가 손상되어 대부분의 브라우저가 그렇게 말하는 경우 b. 웹 서버가 이미지를 제대로 제공하지 못하는 것 – Sammaye

답변

0

잘못된 헤더 :

header('Content-type: image/png;'); 
           ^--- don't put a semi-colon here 

에는 이미지 유형 image/png; 없습니다. 단지 image/png이고 HTTP 헤더는 세미콜론이 아닌 줄 바꿈으로 구분됩니다.

+0

감사하지만 여전히 동일한 결과를 표시합니다. btw, 내 리소스 로이 [링크] (http://www.php.net/manual/en/mongogridfsfile.getresource.php)를 사용하고 그것은 세미콜론도 가지고있는 것 .. –