2013-07-26 56 views
1

我在Yii中有一個受保護的文件夾,我正在尋找在該網站內顯示一些這些圖像。我試過下面的代碼,它在網站/索引控制器中工作,它只返回我想要的圖像。顯示來自受保護文件夾的圖像

但是,當我試圖分離代碼它不起作用。任何幫助表示讚賞。

型號

public function getImage() // will take file identifier as @param  
{ 

    $imageID = '2562584569'; // will eventually be dynamically assigned 

    $image = Images::model()->find('tmp_name=:id', array('id' => $imageID)); 

    $dest = Yii::getPathOfAlias('application.uploads'); 

    $file = $dest .'/' . $image->tmp_name . '.' . $image->extension; 

    if(file_exists($file)){ 
    ob_clean(); 
    header('Content-Type:' . $image->logo_type); 
    readfile($file); 
    exit; 
    } 

} 

並在視圖

CHtml::link('<img src="' . Yii::app()->request->baseUrl .'/images/image" />', array('product/index', 'id'=>$data['product_id'], 'slug'=> $data['product_slug'])); 

感謝

Jonnny

回答

1

我去一下這樣

CHtml::link('<img src="' . $this->createUrl('/images/image', array('data'=>$data['data'])) . '" />', array('product/index', 'id'=>$data['product_id'], 'slug'=> $data['product_slug'])); 

型號

public function actionImage($data)  
{ 

$image = Images::model()->find('tmp_name=:data', array('id' => $data)); 

$dest = Yii::getPathOfAlias('application.uploads'); 

$file = $dest .'/' . $image->tmp_name . '.' . $image->extension; 

if(file_exists($file)){ 
ob_clean(); 
header('Content-Type:' . $image->logo_type); 
readfile($file); 
exit; 
} 

} 

感謝所有幫助

2

「保護」 文件夾並不是從客戶端訪問瀏覽器。這可以防止人們訪問重要文件,如源代碼。

如果要將圖像存儲在「受保護」內並希望它們可以訪問,則需要使用CAssetManager發佈它們。

用法是一樣的東西:

$path = Yii::app()->basePath.'/path-inside-protected'; 
$yourImageUrl = Yii::app()->assetManager->publish($path); 

的Yii程序將使用該文件作爲一種資產,它應對的「資產」文件夾中,兄弟姐妹「保護」。之後,您可以使用HTML上返回的網址。

<img src="<?php echo $yourImageUrl ?>"> 
+0

好吧,我檢索結果列表的一部分結果集是產品徽標,所以我一直使用'controller/method/id'作爲src並傳遞i對方法使用'id'。所以images/image/2562584569涉及到圖像控制器,getimage()方法,文件id。儘管 – Jonnny

+0

仍然無法顯示圖像。事情是..只是無法查看存儲在受保護文件夾內的圖像,無論您嘗試什麼方法,直到您使用assetManager將這些文件複製到資產目錄中。 另一種方法是在Apache中工作時修改.htaccess文件。我的猜測是你是。不過,我強烈建議不要修改它。 –

+0

我正在考慮這個一般的想法,但不確定實施。基本上src標籤調用特定的模型/方法/ ID,確認文件存在,然後獲取代理返回訪問文件並返回圖像?這會起作用嗎? – Jonnny

相關問題