0

我在使用 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;
}

我做错了什么?

4

2 回答 2

2

您正在生成使用file://从 Web 服务器加载的页面中的 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.phphttp://localhost/subdir/images/january/my_image.jpg

/images/january/my_image.jpg将始终相对于网站的根目录进行解释。Web 浏览器将请求http://localhost/images/january/my_image.jpg.http://localhost

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

于 2010-06-20T20:40:36.737 回答
0

最好使用常量“DIRECTORY_SEPARATOR”而不是'/'或'\'

于 2010-06-20T22:01:46.877 回答