2011-03-27 83 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插件都可以使用。

然后将这些标头与您直接请求此图像的标头进行比较。
然后你可以在这里问你的问题,提供这些标题。

相关问题