4 回答

TA貢獻1820條經驗 獲得超2個贊
將“FILESYSTEM_DRIVER=public”更改為
FILESYSTEM_DISK=public
或者完全刪除該行并直接在 filesystems.php 中將 public 文件夾設置為默認磁盤,如下所示:
'default' => env('FILESYSTEM_DISK', 'public'),

TA貢獻1805條經驗 獲得超9個贊
這看起來更像是配置緩存問題,因為您的文件系統看起來配置正確。
文件storage/app夾是laravel默認磁盤(磁盤)的路徑local。由于您已指定使用 public 作為 .env 中的默認磁盤,但您的應用程序仍在使用本地磁盤路徑,因此看起來像是緩存問題
嘗試使用
php artisan config:clear
然后嘗試
request('avatar')->store('avatars');
如果確實是緩存問題,那么文件應該存儲在storage/app/public文件夾中。
要獲取圖像的完整路徑,請使用
Storage::url('avatar/'.$user->avatar);
所以在訪問器中,使用
public function getAvatarAttribute($value)
{
return Storage::url('avatar/'.$value);
}
不推薦使用asset()獲取文件路徑,因為如果有一天您希望將存儲切換到云(S3 或任何其他存儲。基本上,您不想使用應用程序的存儲文件夾),那么將asset()不會不再給你正確的路徑,你需要在任何地方改變它。但是當使用存儲門面時,您需要做的就是在 filesystems.php 中更改它
另外,為了自己測試一下,你也可以通過將磁盤指定為存儲方法的第二個參數來指定存儲時的磁盤
request('avatar')->store('avatars', 'public');
Storage::disk('public')->url('avatar/'.$user->avatar);

TA貢獻2080條經驗 獲得超4個贊
另外,不要忘記刪除public/storage
文件夾
然后重新運行
php artisan config:clear
這個很重要
php artisan storage:link

TA貢獻1830條經驗 獲得超9個贊
另外,不要忘記刪除public/storage
文件夾
然后重新運行
php artisan config:clear
這個很重要
php artisan storage:link
- 4 回答
- 0 關注
- 202 瀏覽
添加回答
舉報