我正在使用Apache和Windows,并且正在编写一个应用程序,该应用程序需要显示位于不同服务器上而不是应用程序目录路径中的零件的图像。图片太多,无法移动,其他应用程序也使用这些相同的图片。
解决此问题的最佳方法是什么?
后端是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;
}
好吧,不要在生产环境中使用此代码,因为它不是安全的。
您可以使用getimagesize()检查它是否为图像。
将phps扩展名列入黑名单,等等。
指定一个工作目录,以免使用后退../../
file_get_contents()
编辑:
关于您对符号链接的评论,如果可以访问apache.conf文件,则可以指定alias指向您的Webroot之外的另一个目录。