ThinkPHP图片文件不存入Public目录可以访问到吗?

有个需求,用户必须登录系统才能看到里面的图片,如果不登录就不能看到。把图片放入public目录下,那就对外了,任何人不登录都能看到;但是不放到public目录下,浏览器又访问不到图片文件,请问有办法解决吗?

阅读 4.7k
2 个回答

如果要设置访问权限,还是走PHP方便, 用PHP写一个下载文件的接口,下面是demo

class Index extends Controller
{
    public function file()
    {
        $filename = $_GET['filename'];

        // 权限判断
        // dosomething

        // 发送文件
        $s = new sendfile();
        $file = '/data/file/' . $filename;
        try {
            $s->send($file);
        } catch (\Exception $e) {
            echo $e->getMessage();
        }
    }
}
http-send-file

可以在你 nginxapache 里配置你的受保护的图片目录默认跳转到你项目的指定文件,这个文件来做权限判断然后决定是否给显示图片。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏