显示存储在Web根文件夹外的图片的问题

时间:2010-04-28 19:22:55

标签: php image

在网站上,用户可以上传图片。出于安全原因,这些存储在webroot(public_html)文件夹之外。当我需要显示图片时,我发送标题并读取“readfile”并输出图片数据,如下所示:

header("Pragma: public");
header("Expires: 0"); // set expiration time
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

header('Content-type: image/jpg');
header('Content-Length: ' . $filesize);

readfile($path_url . '/' . $photo);

这很好用,但网站正在增长,这开始成为服务器的负担。

问题:有没有办法将图片或图片数据发送给用户,而服务器首先不必加载图片(显然图片仍然存储在webroot文件夹之外)?

谢谢!

大卫

3 个答案:

答案 0 :(得分:1)

如果您的问题确实来自这个地方并且您无法使用HTTP缓存,那么就有一个解决方案,一个代理网络服务器。带有X-Accel-Redirect的nginx或带有X-Sendfile头的lighttpd

答案 1 :(得分:0)

您可以将图片存储在SQL数据库中吗?

答案 2 :(得分:0)

您可以查看mod_xsendfile,这是一个有时在您的情况下有用的apache模块。否则,您可能需要考虑实施专用媒体服务器。