2014-05-03 184 views
0

你好我正在學習Zend Framework,我想做一個簡單的圖庫。我有一個表格,並上傳照片到數據庫,但是當我想要顯示時,我得到了強化文本,而不是圖像。如何檢索這些圖像?在分貝我有照片行與BLOB類型。這裏是我的代碼:控制器Gallery zend框架

public function addAction() 
{ 
    $form = new Application_Form_Gallery(); 
    $this->view->form = $form; 
    if($this->getRequest()->isPost()){ 
     $formData = $this->getRequest()->getPost(); 
     if($form->isValid($formData)){ 
      $image = $form->getValue('file'); 
      $gallery = new Application_Model_Gallery(); 
      $gallery->add($image); 
      $this->_helper->redirector('index');     
     }else{ 
      $form->populate($formData); 
     } 
    } 
} 

型號

public function add($photo){ 
    $data = array(
     'photo' => $photo, 
     'created_at' => new Zend_Db_Expr('CURDATE()') 
    ); 
    $this->insert($data); 
} 

查看:

<div class="img" style="width: 150px; height: 150px;"> 
<?php foreach($this->gallery as $photo): 
    echo base64_decode($photo['photo']); 
endforeach; ?> 
</div> 
+0

「強度文本」是什麼意思? – emaillenin

+0

而是像我得到這個「×MøÛ¯yë®=÷÷贖罪óNvÓ¿:ï¯yòxér‰©•E 1 UE「,ZG] <Ó½ù$ñ~v®³M£|」在我的佈局有$ this-> headMeta() - > appendHttpEquiv('Content-Type','image/jpg,image/png;'); –

+0

爲什麼要將圖像存儲到數據庫?爲什麼不將它們上傳到目錄並存儲它們的名稱到數據庫? –

回答

0

在你看來,你只是 「傾銷」 字符串的base64解碼字符串轉換成一個div,這韓元沒有工作。

你可能想要做的就是在你的控制器動作這使得每一張照片作爲二進制響應。然後,您可以在您的視圖中訪問此操作:

<img src="<?php $this->url(
    'action_that_renders_the_photo', array('id' => $gallery['photo_id'] 
); ?>"> 

我更喜歡在瀏覽器中使用base64數據。如果你想保持它接近你的榜樣越好,你可能想創建一個<img>並指定其來源爲Base64數據:

<img src="data:image/png;base64,<?php echo $gallery['photo'] ?>"> 

但請記住,不是所有的瀏覽器允許嵌入base64-數據。

+0

它仍然不工作,我想從數據庫映像這樣我得到了它可能是從目錄。 –

+0

「它不起作用」不是一個有幫助的問題描述,你能更具體嗎?你的問題到底在哪裏,輸出是什麼,它與預期輸出有什麼不同?看看這個問題,也許這有助於: http://stackoverflow.com/questions/1207190/embedding-base64-images – dbrumann