簡體   English   中英

找不到 Laravel 5.4 存儲文件

[英]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/publicpublic/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM