2017-10-05 55 views
0
<?php 
public function beforeFilter(\Cake\Event\Event $event) 
{ 

    $user = $this->request->session()->read('Auth.User'); 
    $this->set('username', $user['username']); 

    $this->set('profile', $user['profile_pic']) 
} 
?> 

內部輪廓圖像在上面的代碼中,我可以print下面username內部元素/文件夾/ nav.ctp如何顯示元件視圖

<?php 
    echo $this->Html->image('users/' .stream_get_contents($profile),array('width'=>'100px','height'=>'100px')); 
?> 

當我打印圖像,警告消息。

警告(2):stream_get_contents()預計參數1是資源,給定[APP /模板/元素/文件夾/ nav.ctp 19行]

+0

你是否將圖像數據存儲在數據庫中或者只是文件名? – arilia

+0

我的圖像字段是longblob,我存儲在數據庫中 – distromob

+0

我還有一個字段名稱「destination」示例/opt/lampp/htdocs/mycakeapps/webroot/img/users/profile2.png – distromob

回答

1

整數閱讀錯誤消息,這是很清楚的:

stream_get_contents()預計參數1是資源,整數給出

所以你傳遞一個int而不是資源。在這種情況下,首要的是查找一種方法所期望的。請參閱stream_get_contents()的php文檔。它顯然想要a stream resource。查找什麼是streamresource,然後相應地採取行動。

但是,您嘗試以這種方式無法正常工作,因爲您沒有訪問文件系統中的文件。請參閱fopen()上的文檔。

您必須在標記中將您的圖像作爲base64編碼的二進制數據回顯。在這裏看到答案:Is it possible to put binary image data into html markup and then get the image displayed as usual in any browser?這將增加由於base64編碼,圖像的大小減少了30%。

我不會爲許多大型圖像做到這一點。從來沒有做過很多,但我很確定瀏覽器會得到性能問題。請注意,此解決方案可能存在安全問題,並且可能存在性能問題。我可以想象,如果數據處理不當,我們可以利用這個將不需要的東西注入到頁面標記中。

還將圖像存儲在未針對此任務明確製作的數據庫中通常被認爲是不良練習。將其存儲在爲此目的而創建的存儲後端中,並在數據庫中引用該位置。

對於未來記得閱讀查找錯誤信息,如果你不理解他們,閱讀文檔,如果你不知道他們在做什麼。