2011-12-20 19 views
0

我有這樣的結構:如何顯示圖像不公開

my_app 
    application 
    controllers 
    forms 
    models 
    views 
    data 
    signature 
    library 
    public 
    tests 

我想在我看來,以顯示圖像在data/signature

我該怎麼辦,因爲輔助$this->baseurl()指向公衆?

回答

1

您可以使用showImageAction(),設置標題並使用file_get_contents()或類似方法放置圖像。

+0

所以沒有辦法用HTML img標籤? – JellyBelly 2011-12-20 09:41:37

+0

只有當您的數據目錄位於公共路徑(我認爲這不是一件好事)時...否則您需要將您的圖像標籤指向控制器 - 將其穿過。出於安全原因,我建議你只在公開目錄中存放你的公共目錄,並將敏感數據放在它之外,並使用可以檢查授權的控制器操作來完成。 – 2011-12-20 09:45:17

+0

恰恰是因爲它們是我把它們放在文檔根目錄之外的敏感數據! 但是,如何在視圖中顯示圖像的這個動作? – JellyBelly 2011-12-20 09:53:44

-1

如果您在DOCUMENT_ROOT中有圖像,您可以通過將瀏覽器指向位置http://example.com/images/image.jpg來顯示它們,但是如果它們不在DOCUMENT_ROOT中,則可以使用腳本(example.com/img.php?id=100)或某個子域(img.example.com/100.jpg maby)顯示不在example.com的DOCUMENT_ROOT中的圖像。

//編輯

如果使用nginx的,你可以做這樣的:http://www.leftjoin.net/2011/03/efficient-file-serving-in-php-application-with-nginx/

+0

在zend框架中,文檔根目錄是公開的,但是我的圖像位於:'data /簽名' – JellyBelly 2011-12-20 09:39:09

+0

在服務器配置中,DOCUMENT_ROOT總是公開的,如果你有文件外部DOCUMENT_ROOT,你應該在控制器中編寫腳本或新動作來提供這些文件,或者使用一些子域 – piotrekkr 2011-12-20 09:45:32