我正在使用Apache和Windows,并且正在编写一个应用程序,该应用程序需要显示位于不同服务器上的部分的图像,而不是应用目录。有太多图片需要移动,其他应用程序使用这些图片。如何访问Web应用程序之外的目录中的图像
解决此问题的最佳方法是什么?
后端是PHP和MySQL - 虽然我不认为这是相关的。
谢谢
我正在使用Apache和Windows,并且正在编写一个应用程序,该应用程序需要显示位于不同服务器上的部分的图像,而不是应用目录。有太多图片需要移动,其他应用程序使用这些图片。如何访问Web应用程序之外的目录中的图像
解决此问题的最佳方法是什么?
后端是PHP和MySQL - 虽然我不认为这是相关的。
谢谢
如果您的文件存储在www根以外。 然后,您需要有足够的权限才能访问这些文件。
然后,你可以这样做:
<?php
$imageFileName = $_GET['image'];
$path = '/var/data/somewhere/';
$fullpath = $path . $imageFileName;
if (!is_file($fullpath))
{
die('Image doesn't exist);
} else {
$size = filesize($fullpath);
$content = file_get_contents($fullpath);
header("Content-type: image/jpeg");
echo $content;
}
那么,在生产environement不要使用此代码,因为它并不安全。
您可以使用getimagesize()来检查它是否为图像。 黑名单的PHPS扩展,等等 指定一个工作目录,对不能够使用落后../../
编辑:
关于你的评论关于符号链接,如果您有权访问apache.conf文件,则可以指定指向webroot之外的另一个目录的alias。
你看过符号链接吗?
ln -s LocalName FullPathOfRealFileLocation
是的,我试过了。这在任何unix/linux变体中都可以很好地工作。窗口快捷方式不能用于路径名称的中间。 ie images/shortcutToAnotherFolder/image.jpg在windows中不起作用。 – sdfor 2009-09-02 03:15:48
由于图像在服务器上,为什么不直接在代码中引用它们?
<img src="http://myotherserver.com/images/picture.jpg"
感谢您的想法。另一台服务器无法通过互联网访问它在计费服务器上 – sdfor 2009-09-02 19:41:24
如果您使用Apache,我发现了最好的答案。我是,使用Apache别名功能,以允许访问内部目录。
正如上述BGY答案所示。
我增加了以下内容的http.conf:
Alias /fabimages p:/IMDATA/IMAGES
<Directory p:/IMDATA/IMAGES>
Order allow,deny
Allow from all
</Directory>
在我的代码
我设置的.src属性为我所需要的图像:
var fabimage = document.getElementById("fabImageTag");
fabimage.src="/fabimages/"+imageName; // and it picks up the image from p:/IMDATA/IMAGES
我忘了提一大点,即我需要从Javascript访问目录。 – sdfor 2009-12-11 17:12:48