PHP如何使用MYSQL检索存储在文档根目录之外的图像?

时间:2012-10-26 04:05:41

标签: php mysql image document-root

我真的很困惑php fileuploading安全并检索这些文件。出于安全原因,我被告知将上传的图像存储在文档根目录之外。我可以上传好,但我不知道我知道如何最好地提供我的MYSQL和HTML结构的图像。这可能是一种愚蠢的方式,但这是我的问题:

我的文档根目录中存储了5个图像。在我的MYSQL数据库中,我存储了该图像的URL路径(例如www.mywebsite.com/images/123.jpg)。我的HTML索引将查询MYSQL并选择图像路径,然后列出图像的所有路径,然后显示图像。

但是我将图像存储在文档根目录之外(出于安全原因)。有没有办法可以在MYSQL中存储像www.mywebsite.com/images/outofroot.jpg这样的URL路径,然后像上面那样进行选择查询?

1 个答案:

答案 0 :(得分:0)

我很好奇你提到的上述“安全理由”是什么,所以如果你能澄清一下,那就太好了!

我的php有点生疏,但据我所知,你应该为jpeg做这样的事情:

header("Content-type: image/jpeg");
$img = imagecreatefromjpeg("/path/to/file.jpg");
imagejpeg($img);

首先,我们设置header以匹配jpeg图像。接下来,我们使用imagecreatefromjpeg将图像加载到内存中。最后,我们使用imagejpeg

投放图片

此示例仅限于jpeg,根据您的使用情况,您可能需要其他类型。您可以编写一些逻辑(作为练习;))以使其适用于其他类型。查看PHP文档中的imagepngimagegif和其他人,了解如何执行此操作。

如果您需要进行某种安全检查(例如,用户必须被授权查看图片),然后将它们存储在工作目录之外并像这样加载它们是一个好主意。

但是,如果你所服务的图像不需要任何权限检查来访问,那么你最好不要正常服务,而不是让中间人服务。