2011-03-27 85 views
5

我有一個鏈接到圖像的css文件。從外部公用文件夾中用PHP提供css圖像

.test{ 
    background: url(http://site.com/dynamic/test.jpg) no-repeat; 
} 

但是這些圖像是動態的。他們改變了一分鐘,所以我必須生成它們並使用php提供它們。這意味着我不會將它們保存到公用文件夾。我只是直接從php腳本服務他們。

問題是當我訪問php腳本(http://site.com/dynamic/test.jpg)時,它會正確生成圖像,我可以在瀏覽器中看到它,但是當我需要的CSS文件中使用相同的url時,CSS可以' t似乎訪問圖像。

我認爲這是因爲圖像沒有保存在公共文件夾中,並通過PHP傳遞,這意味着圖像必須直接調用生成,並調用css文件實際上並沒有打到php腳本(圖片網址)。

有沒有人有想法來解決這個問題?

+1

圖像的創建方式並不重要,CSS與CSS完全相同。如果您安裝了Firebug,請查看netpanel並查看圖像嘗試加載時是否出現錯誤。 – JohnP 2011-03-27 06:49:48

+0

只是好奇,你爲什麼引用.jpg,如果一個PHP腳本生成它,它不會是test.php? (除非你有php編譯器處理過的jpg擴展,這很奇怪) – Ben 2011-03-27 06:52:32

+1

@mazzzzz:OP可能會解析'$ _SERVER ['REQUEST_URI']'或類似的東西來提取虛擬路徑。或者使用'mod_rewrite'。掩蓋這一點的衆多方法。 – 2011-03-27 06:54:51

回答

1

嘗試使用PHP的頭功能

header("Content-type: application/force-download"); 
header('Content-Type: application/octet-stream'); 
header('Content-Type: image/jpeg'); // or png... 
+0

緩存控制標頭也不會傷害,因爲這些是每分鐘更新一次的圖像。 * header(「Cache-Control:no-cache,must-revalidate」); * – Marcel 2011-03-27 07:12:43

+0

所以你建議我們創建一個響應頭部包含這些語句的動作?你可以發佈一些代碼嗎? – Prasad 2011-04-20 15:43:51

-2

首先,你應該問你自己的系統,這是怎麼回事的返回內容類型,沒有誰不知道,也沒有訪問您的網站的人。

使用一些HTTP嗅探器來查看正在發送哪個HTTP請求以及返回哪些響應。爲Firefox或任何類型的LiveHTTPHeader或firebug插件都可以使用。

然後將這些標頭與您直接請求此圖像的標頭進行比較。
然後你可以在這裏問你的問題,提供這些標題。

相關問題