2017-08-28 141 views
0

我正在研究laravel 4.2項目,我應該上傳視頻,將它們保存在存儲文件夾內,然後在用戶可以在頁面中顯示它們播放這些視頻。保存視頻的第一部分已完成,但問題在於獲取文件。Laravel 4.2,保存和訪問存儲文件夾內的文件

我到處尋找,不像laravel 5.x,它似乎沒有明確的方式來訪問存儲文件夾和獲取文件(即使Storage :: get無法使用)。

作爲一個簡單的例子來進行測試,我被從存儲文件夾內聯一個簡單的圖像開始,仍然犯規幹活試圖鏈接函數(刀片)

<img src="{{url('code/app/storage/files/videos/gg.jpg') }}"/> 

它給出了這樣的線,當通過瀏覽器編譯:

<img src="http://dr.test/userptl/code/app/storage/files/videos/gg.jpg"/>

路徑代碼/應用/存儲/文件/視頻/ gg.jpg是正確的,但仍然無法訪問到圖像。

storage_path()無法使用,因爲它會生成根的完整路徑,即不正確。

有沒有辦法解決這個問題?

+0

PHP工匠存儲:鏈接 這將爲您創建從公共/存儲到存儲/應用程序/公共的符號鏈接。現在/ storage/app/public中的任何文件都可以通過以下鏈接訪問: http://somedomain.com/storage/gg.jpg – Rakib

回答

0

當您上傳文件時,它會存儲在臨時文件夾中。您必須將其移至可公開訪問的文件夾中。 $file = $request->file('file'); \Storage::put($path.'/'.$newFilename, file_get_contents($file));

您可能需要在存儲和公共之間有一個符號鏈接來使這些文件可訪問。

0

在情況下,如果你不使用

php artisan storage:link 

添加以下代碼到你的路由器:

Route::get('storage/{filename}', function ($filename) 
{ 
    $path = storage_path('public/' . $filename); 

    if (!File::exists($path)) { 
     abort(404); 
    } 

    $file = File::get($path); 
    $type = File::mimeType($path); 

    $result = Response::make($file, 200); 
    $result->header("Content-Type", $type); 

    return $result; 
}); 

然後在視圖中,可以使用這樣的:

<img src="{{ asset("storage/gg.jpg")}}"/> 
相關問題