2010-06-20 79 views
0

我有一个链接在Windows上使用Apache进行本地测试的问题。最终链接的格式如下:使用Apache与Windows的图像路径

file:///C:/Documents and Settings/USUARIO/My Documents/xampp/htdocs/my_website/images/january/my_image.jpg 

图像不显示。但是,如果我直接从img标签复制src并将其粘贴到浏览器(Firefox)中,图像就会显示出来。

我生成使用下面的代码链接:

我定义使用的图像目录:define(IMAGE_DIR, dirname(__FILE__).'/images/');
然后我使用以下格式的路径:

$imgPath = IMAGE_DIR.$month.$img; 
if($localServer) 
{ 
    $imgPath = str_replace('/','\\', $imgPath); 
    $imgPath = 'file:///'.$imgPath; 
} 

我是什么我做错了?

回答

2

您正在生成的图像源使用从Web服务器加载的页面中的file:// URL。文件URL指示浏览器直接从磁盘加载文件,而不向Web服务器发出请求。出于安全原因,Firefox和其他浏览器不允许Web服务器提供的页面引用本地文件,因此不要显示图像。远程访问您的站点的人将无法访问这些文件,因为图像源将是对其计算机上的路径的引用。

要使图像显示出来,您需要更改图像源以指向Web服务器上的位置,例如images/january/my_image.jpg/images/january/my_image.jpg

images/january/my_image.jpg将被web浏览器相对于被请求的页面解释。例如,如果图像出现在页面http://localhost/page1.php处,则浏览器将请求http://localhost/images/january/my_image.jpg。但是,如果图像在http://localhost/subdir/page1.php的页面上使用,则浏览器将请求http://localhost/subdir/images/january/my_image.jpg

/images/january/my_image.jpg将始终被解释为相对于网站的根目录。网页浏览器将要求http://localhost/images/january/my_image.jpghttp://localhost的任何页面。

如果您需要引用另一台Web服务器上的映像,例如http://otherhost/images/january/my_image.jpg,则还可以使用绝对URL。

+0

我用目录名(__ FILE__)来定义的路径,这样,当我使用包括()的路径包括配置文件不要在不同的目录中更改。如果我使用define(IMAGE_DIR,'/ images /'),当将该配置文件包含在不同目录中时,会不会遇到麻烦? – 2010-06-20 21:10:13

+0

@ sala_7不,您不会遇到任何不同的目录问题。无论您的页面所在的目录如何,以'/开头的路径将始终指向Web服务器上的相同位置。 – 2010-06-20 22:23:50

+0

非常感谢!我想我对Web根目录下包含文件夹的路径感到困惑,它使用include()从其他目录导入页面部分 – 2010-06-21 08:07:07

0

这是更好地使用常量“DIRECTORY_SEPARATOR”代替“/”或“\”