搜尋

首頁  >  問答  >  主體

在Laravel中,如何顯示存在storage目錄中的圖片檔案。

我講一些圖片和用戶上傳檔案保存在了storage目錄中(處於安全考慮,不希望用戶隨意下載),

那麼在需要顯示該檔案時,該如何取得路徑呢?

滿天的星座滿天的星座2749 天前592

全部回覆(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
  • 取消回覆