2014-10-22 23 views
1

我是一个MongoDB和php的完全新手,我的问题是存储在我的位置数据库中的图像没有显示。我有一个测试代码插入我的所有数据,包括我的图像名称。此图像名称将用于访问存储在同一数据库中的图像。图像不显示在MongoDB中使用php

这里是我的插入数据的代码

<?php 
try { 
    // open connection to MongoDB server 

    $conn = new Mongo('localhost'); 

    //access database 

    $db = $conn->location; 

    //access collection 
    $collection = $db->loc; 

    // insert a new document 
    $filename = "102120140913290.jpg"; 
    $data = array(
     'name' => 'Butuan', 
     'latitude'=> 8.9576751, 
     'longitude' => 125.5963283, 
     'imagename' => $filename 
     ); 

    $collection->insert($data); 
    echo 'Inserted document withy ID:' . $data['_id'] . '<br/>'; 

    $img = $db->getGridFS(); 
    $path = "C:\\xampp\\htdocs\\mysite\\upload\\"; 


    $storedfile = $img->storeFile($path . $filename, 
      array("metadata" => array("filename" => $filename), 
      "filename" => $filename)); 

    echo 'Stored file ID:' . $storedfile; 

} catch (MongoConnectionException $e) { 
    die('Error connecting to MongoDB server'); 
} catch (MongoException $e) { 
    die('Error: ' . $e->getMessage()); 
} 

?> 

这里是我获取图像的代码

<?php 

    try{ 

     $conn = new Mongo('localhost'); 
     $db = $conn->location; 
     $collection = $db->loc; 

     $cursor = $collection->find(); 
     $imgname; 
     echo $cursor->count(). 'document(s) found. <br/>'; 

     foreach($cursor as $obj){ 
      $imgname = $obj['imagename']; 
     } 


     $gridFS = $db->getGridFS(); 
     $image = $gridFS->findOne($imgname); 

     header('Content-type: image/jpeg'); 
     echo $image->getBytes(); 

    } catch (MongoConnectionException $e) { 
     die('Error connecting to MongoDB server'); 
    } catch (MongoException $e) { 
     die('Error: ' . $e->getMessage()); 
    } 

    ?> 

我得到的是一个破碎的形象。请帮助..谢谢..

回答

2

只是检查了几件事

你应该用“新MongoClient”作为“新蒙戈”已depricated。

尝试更换下面的代码段:

$gridFS = $db->getGridFS(); 
$image = $gridFS->findOne($imgname); 
$imageFile = $image->getBytes(); 

header('Content-type: image/jpeg'); 
header("Content-Length: " . strlen($imageFile)); 
ob_clean(); 
echo $imageFile; 

也看一下storeUpload功能http://php.net/manual/en/mongogridfs.storeupload.php

+0

什么的ob_clean看台? – ErenRavenHeart 2014-10-23 00:48:47

+0

我相信它代表“输出缓冲区”。 – ebadedude 2014-10-23 23:58:26