2012-05-17 3 views
0

GridFS를 사용하고 있는데, 현재는 findOne을 사용하여 단일 이미지를 표시 할 수 있습니다. 그리드의 모든 결과를 반복하여 모두 화면에 표시하고 싶습니다. 여기 내가 사용하고 코드 :결과 반복 MongoDB & GridFS (PHP)

<?php 
try { 
    // open connection to MongoDB server 
    $conn = new Mongo; 

    // access database 
    $db = $conn->database; 

    // get GridFS files collection 
    $grid = $db->getGridFS(); 

    // retrieve file from collection 
    header('Content-type: image/png'); 
    $file = $grid->findOne(array('_id' => new MongoId('4fb437dbee3c471b1f000001'))); 

    // send headers and file data 

    echo $file->getBytes(); 
    exit; 

    // disconnect from server 
    $conn->close(); 
} catch (MongoConnectionException $e) { 
    die('Error connecting to MongoDB server'); 
} catch (MongoException $e) { 
    die('Error: ' . $e->getMessage()); 
} 
?> 

감사

답변

0

를 사용하여 결과를 반환하는 "findOne"대 "찾기"로 설정 할 수 있습니다와 같은 foreach는과를 통해 루프 :

$ files = $ grid-> find ({});

foreach ($ 파일로 $ 파일) {echo $ file-> someData; 웹 페이지에 이미지를 표시하는 경우} 일반적으로

+0

나는이 $ files = $ grid-> find()를 시도했다. foreach ($ 파일로 $ 파일) {echo $ file-> getBytes(); } 작동하지 않더라도 –

+0

모든 파일을 원하면 find ({}) (빈 매개 변수로 중괄호를 주목하십시오)를 찾아보십시오. 그리고 $ file-> getBytes();를 표시하는 대신; 루프에서 "print_r ($ file);" 단지 당신이 아무것도 얻는지를보기 위해 디버그하는 것. – jbnunn

0

, 당신은 <img src="someUrl" /> 같은 태그들을 잔뜩 갖고 싶어하고 하나의 이미지를 얻기 각 someUrl 핸들을 가지고있다.

0

이미지/png로 헤더를 설정하면 브라우저는 하나의 이미지 만 예상합니다.

당신이 할 수있는 일은 텍스트/HTML 문서로 변경하고 데이터 URI 체계 (http://en.wikipedia.org/wiki/Data_URI_scheme 참조)를 사용하여 이미지를 삽입 한 다음 일련의 이미지 태그로 이미지를 출력하는 것입니다. 당신은 아마 이미지의 마임 유형과 그에 따라 변경 및 고도, 폭과 높이 파일의 메타 데이터를 사용하여 속성을 설정하면 감지 할

<!doctype html> 
<html> 
    <head> 
     <meta charset="UTF-8"> 
     <title>My images</title> 
    <head> 
    <body> 
    <?php 
    /* ... db connection/init code ... */ 

    $files = $grid->find({}); 

    foreach($files as $file) { 
     $encodedData = base64_encode($file->getBytes()); 
     echo "<img src=\"data:image/png;base64,{$encodedData}\">"; 
     echo "<br>"; 
    } 
    ?> 
    </body> 
</html> 

참고.

희망이 도움이됩니다.

관련 문제