搜索

首页  >  问答  >  正文

Laravel中,如何显示存在storage目录中的图片文件。

我讲一些图片和用户上传文件保存在了storage目录中(处于安全考虑,不希望用户随意下载),

那么在需要显示该文件时,应该如何获取路径呢?

滿天的星座滿天的星座2749 天前596

全部回复(1)我来回复

  • 滿天的星座

    滿天的星座2017-05-16 16:50:12

    两个方案,第一个,php读取文件并输出,在Laravel中代码大致如下

    // 控制器
    // https://github.com/shellus/shcms/blob/v2.0.0/app/Http/Controllers/FileController.php
    
    class FileController extends Controller
    {
        public function show($id){
            return File::findOrFail($id) -> downResponse();
        }
    }
    
    // Model
    https://github.com/shellus/shcms/blob/v2.0.0/app/File.php
    
    public function downResponse(){
        return new BinaryFileResponse($this -> downToLocal());
    }
    public function downToLocal(){
        $temp_path = tempnam(sys_get_temp_dir(), $this->id);
        $is_success = file_put_contents($temp_path, \Storage::disk('public')->get($this -> full_path));
        return $temp_path;
    }
        

    第二个,使用Linux ln命令建立storage文件夹软链接public文件夹,但是这样做与直接将文件存放在public没有区别。

    回复
    0
  • 取消回复