[英]Laravel 5.4 storage file not found
我正在使用 laravel 5.4。 我在 storage/app/public/documents 文件夾中上傳了一些文檔文件,比如
$request->paper_file->store('documents');
我的文件上傳成功。
在文件系統中,默認存儲是公共的,公共 conf 就像
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',],
但是當我點擊 /storage/documents/hQqlgifnVVH8bmrRPVdZ9aFGbhLmcc7g7bHZSX4u.pdf 時,它說找不到 404。如何解決這個問題。
默認情況下,Laravel 將文件放在storage/app/public
目錄中,外部網絡無法訪問該目錄。 所以你必須在那個目錄和你的公共目錄之間創建一個符號鏈接:
storage/app/public -> public/storage
您可以通過執行php artisan storage:link
命令 ( docs ) 來做到這一點。
將項目移動到不同的文件夾后,這個問題發生在我身上。 如果您已經生成了存儲鏈接,請嘗試刪除public/storage 文件夾並再次運行:
php artisan storage:link
在 laravel ^5.8 中:
php artisan storage:link
以將storage/app/public
與public/storage
鏈接起來。現在:
// this return some like 'public/documents/file.ext'
$path = $request->paper_file->store('public/documents');
// this return some like 'storage/documents/file.ext'
$publicPath = \Storage::url( $path) );
// this return some like '< APP_URL env variable >/storage/documents/file.ext'
$url = asset( $publicPath );
當您使用 Laravel 的存儲功能上傳圖片時,它會存儲在存儲文件夾中。 例如:storage/app/public/avatars/file1.png
但是當你想通過 URL 訪問它時,你應該像這樣訪問它:
存儲/avatars/file1.png
它對我有用,使用 Laravel 7.x。
如果你來自 laravel 8.x 並且確實運行了命令php artisan storage:link
(創建一個符號鏈接),但是你的代碼不工作,即你試圖加載的文件沒有顯示,那么你就像我。
剛好ahmad提到,這個解決方案對我的 laravel 8x 項目很有幫助。 我沒有使用資產輔助函數從我的刀片文件中添加“存儲”路徑名,所以我的圖像路徑沒有輸出任何東西,但是當我像這樣輸入'storage'
路徑名時asset('storage/uploads/pic1.png)
我的代碼有效!
猜猜這可能對某人有幫助。
運行php artisan storage:link
后,它會在 public 文件夾中創建一個符號鏈接,您可以像這樣檢索記錄<img src='{{ asset("public/$advert6") }}' class="img-responsive">
. 你應該包括public
目錄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.