我正在尝试访问位于我网站外部文件夹中的图片。 我试图通过放置../来超出我的文件夹,但这样做有误。 我也尝试给出一个绝对路径,但是那里有空格(比如“文档和设置”),这也不起作用
有人有想法吗?
答案 0 :(得分:6)
您无法从客户端HTML访问文档根目录之外的文件。如果您无法在文档根目录下移动文件,则可以将服务器配置为允许访问该目录,或编写服务器端脚本以中继文件。
如果您正在使用Apache,则可以使用Alias将文件系统上的目录映射到文档根目录:
Alias /foo "/path/to/my/foo"
Plan B是编写一个脚本来获取文件。例如,而不是尝试像
这样的东西 <img src="/../foo/bar.gif">
你可以这样做
<img src="/getimage.php?name=bar.gif">
getimage.php的简单实现可能是这样的
//get the passed filename
$file=$_GET['name'];
//basic security check - ensure the filename is something likely
if (preg_match('/^[a-z]+\.gif+$/', $file))
{
//build path and check it exists
$path=$_SERVER['DOCUMENT_ROOT'].'/../foo/'.$file;
if (file_exists($path))
{
//return file here. A production quality implementation would
//return suitable headers to enable caching and handle
//If-Modified-Since and etags...
header("Content-Type: image/gif");
header("Content-Length:".filesize($path));
readfile($path);
}
else
{
header("HTTP/1.0 404 Not found");
echo "Image not found";
}
}
else
{
header("HTTP/1.0 400 Bad Request");
echo "Naughty naughty";
}
答案 1 :(得分:3)
您的图片位于何处?通常,网站无法访问为其提供服务的计算机的完整文件系统(出于显而易见的原因)。您应该将图像放在网站根目录下的文件夹中,或者将其托管在其他位置。
答案 2 :(得分:2)
您无法引用网络服务器文档根目录之外的资源。但您可以为该文件夹定义alias:
Alias /images "C:/Users/Horst/Documents and Settings/My Images/"
答案 3 :(得分:1)
Stand HTML无法访问Web根目录之外的文件(出于非常好的安全原因)。实现这一目标的最佳选择是使用编程语言编写某种读取文件的处理程序,然后将其传递给输出流。例如,在ASP.NET中,您可以编写.ASHX handler。
答案 4 :(得分:0)
在网址中,使用“+”字符表示空格。
答案 5 :(得分:0)
您是否尝试将路径封装在字符串中?例如
cd "C:\Documents and Settings\foo\bar\"