2014-01-31 24 views
0

在Php(zend框架1.x)我打印RAW值data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAA....。並試圖預覽它在PHP - 我怎麼能回顯這個變量爲jpeg

但是,當加載JPEG鏈接其失敗,內容類型:圖像/ HTML而不是圖像/ JPEG。

在PHP中,我將內容類型設置爲image/jpeg,但不適用。如何解決它?

public function getpreviewAction() { 
    $this->_helper->layout()->disableLayout(); 
    $this->_helper->viewRenderer->setNoRender(); 

    $this->_response->setHeader('Access-Control-Allow-Origin', '*'); 
    $this->_response->setHeader('Content-Type', 'image/jpeg'); 

    $post = $this->getRequest()->getQuery(); 
    $data = (object) $post; 
    $this->db = Application_Model_Db::db_load(); 

    $sql = "select *from sh_av_profile where 
       username='{$data->username}' 
     limit 1"; 

    $result = $this->db->fetchAll($sql); 
    if (count($result) > 0) { 
     //echo "<img src={$result[0]['preview']} />"; 
     echo $result[0]['preview'];   
    }  

    exit; 
    } 

JS:

function previewRender() { 
    var root = $('img'); 
    //root.attr('src',lasturl +"?"+ Date.parse(new Date().toString()));  

    root.attr('src', 'http://pbx/ajax/getpreview?username=T1');  
    } 

響應頭:

Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Connection:Keep-Alive 
Content-Encoding:gzip 
Content-Length:18844 
Content-Type:text/html 
Date:Fri, 31 Jan 2014 07:06:14 GMT 
Expires:Thu, 19 Nov 1981 08:52:00 GMT 
Keep-Alive:timeout=5, max=70 
Pragma:no-cache 
Server:Apache/2.2.22 (Ubuntu) 
Vary:Accept-Encoding 
X-Powered-By:PHP/5.4.6-1ubuntu1.2 
+0

Getpicture中在Zend的src和getpreviewAction?你確定你發佈的方法是被稱爲? –

+0

在調用getpreviewAction()之前是否打印了任何東西?任何響應都會強制發送標題,因此在發送標題之後更改標題將不會執行任何操作(如您在示例中所見)。 – styfle

+0

這是粘貼錯誤。它應該是getpreview並仍然是同樣的問題。 – YumYumYum

回答

1

我認爲你需要base64_decodeecho變量。

此外,如果你只是exit,那麼setHeader將不會工作。所以只要在echo之前做header('Content-Type: image/jpeg')即可。

編輯:

header('Content-Type: image/jpeg'); 
echo base64_decode($result[0]['preview']); 
exit(); 
+0

像你所說的嘗試過,但仍然無法正常工作。例如:echo「data:image/jpeg; base64」。 BASE64_DECODE($生);或回聲base64_decode($ raw);或標題(..還沒有得到JPEG – YumYumYum

+0

檢查編輯。假設'$ result [0] ['preview']'是base64編碼的字符串,它應該工作得很好。 – Salman

+0

YES - 它是base64編碼的字符串,但就像你所示,我已經申請了,仍然沒有工作。我的字符串是「data:image/jpeg; base64,/ 9j/4AAQSkZJRgABAQAA .... long ..」我也嘗試過將它分成兩部分作爲數據:image/jpeg; base64,另一部分包含所有隨機加密的值,然後還與base64_decode一起使用這兩部分,但仍然同樣沒有運氣。 – YumYumYum