2017-08-07 296 views
1

我在這條路的刀片:Laravel「無法加載資源」

/resources/views/cms/public/views/projects/showproject.blade.php 

而且呈現畫面的代碼是這樣的:

@if (Storage::disk('projects')->has($project->slug)) 
    <p class="lead"><img src="{{ asset('/storage/projects/'.$project->slug.'/home.png') }}" width="50%" >Home</p> 
@else 
    <p class="lead"><img src="/assets/img/projects/{{$project->slug}}/home.png" width="50%">Home</p> 
@endif 

存儲磁盤稱爲項目看起來像在這裏:

'projects' => [ 
     'driver' => 'local', 
     'root' => storage_path('app/public/projects'), 
     'url' => env('APP_URL').'/storage', 
     'visibility' => 'public', 
    ], 

的錯誤是這樣的:

header.png Failed to load resource: the server responded with a status of 500 (Internal Server Error) 

我認爲問題是在視圖上的代碼,我也看過也許我需要使用符號鏈接,是不可能使它沒有?

任何幫助將不勝感激,如有任何問題請問。

謝謝。 (我之前檢查了其他的stackoverflow問題,並且找不到錯誤)。

+0

儘量使符號鏈接,也就是在'storage'文件夾,並從你的'public'文件加載需要被符號鏈接的一切。 – Jorn

回答

2

從文檔https://laravel.com/docs/5.4/filesystem

公共磁盤

公共磁盤旨在爲將要公開訪問的文件。默認情況下,公共磁盤使用本地驅動程序並將這些文件存儲在storage/app/public中。爲了讓他們可以通過網絡訪問,您應該創建一個從公共/存儲到存儲/應用/公共的符號鏈接。這種約定將您的可公開訪問的文件保存在一個目錄中,在使用零時間部署系統(如Envoyer)時,可以輕鬆地在部署中共享這些文件。

要創建符號鏈接,您可以使用存儲:鏈接工匠命令:

php artisan storage:link 

當然,一旦文件被存儲和符號鏈接已經建立,您可以創建一個網址使用資產幫助文件:

echo asset('storage/file.txt'); 
+1

嗨Jorn,首先感謝您的快速回答。當我發佈我也在閱讀文檔的問題時。這是成功的,只是讓'php artisan存儲:鏈接',然後'slu。'/ home.png')}}「width =」50%「>家'感謝很多!不知道哪個擴展名,我應該怎麼做?謝謝不管怎麼說;) –

+0

我會將你的圖像名稱,類型,路徑存儲在你的數據庫中如果你的圖像是你的設計的一部分,並會留在那裏很長一段時間,只是硬編碼它們,如果你有頁面上傳圖像或頻繁更改圖像,存儲它們,這樣你可以檢索位置,並從數據庫中輸入 – Jorn