亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

圖像不會保存在公共文件夾 laravel 中

圖像不會保存在公共文件夾 laravel 中

PHP
ABOUTYOU 2023-05-26 10:06:43
我正在學習 laravel 但我現在對圖像有問題,我希望它保存在 storage/app/public/avatar 中以便我可以顯示它,但它一直保存在 storage/app/avatar 中我在 .env 中寫這個FILESYSTEM_DRIVER=public然后我生成存儲鏈接php artisan storage:link 但還是一樣,每次我上傳照片時都會將其保存在 storage/app/avatar任何人都可以幫助我嗎?在 filesystems.php 中'public' => [        'driver' => 'local',        'root' => storage_path('app/public'),        'url' => env('APP_URL').'/storage',        'visibility' => 'public',    ],這里 : $attributes['avatar'] = request('avatar')->store('public/avatars');在用戶.phppublic function getAvatarAttribute($value){    return asset($value);}當我使用隨機頭像鏈接時,此方法工作正常,但現在它什么也沒顯示,我檢查了我的數據庫,鏈接就在那里,它是正確的public function getAvatarAttribute($value) {    asset('storage/avatars/'.$image->name); }$attributes['avatar'] = request('avatar')->store('public/avatars');在控制器中,更新方法:    $user->update($attributes);    $user->password = Hash::make($user['password']);    $user->save();    return redirect($user->path());在 show.blade 中 <img            src= "{{ $user->avatar }}"            alt=""            class="rounded-full mr-4 absolute"            style="width: 150px; left: calc(50% - 75px); top: 300px"        >但 src 變為“(未知)”
查看完整描述

4 回答

?
DIEA

TA貢獻1820條經驗 獲得超2個贊

將“FILESYSTEM_DRIVER=public”更改為

FILESYSTEM_DISK=public

或者完全刪除該行并直接在 filesystems.php 中將 public 文件夾設置為默認磁盤,如下所示:

'default' => env('FILESYSTEM_DISK', 'public'),


查看完整回答
反對 回復 2023-05-26
?
Cats萌萌

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);


查看完整回答
反對 回復 2023-05-26
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

另外,不要忘記刪除public/storage文件夾

然后重新運行

php artisan config:clear

這個很重要

php artisan storage:link


查看完整回答
反對 回復 2023-05-26
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

另外,不要忘記刪除public/storage文件夾

然后重新運行

php artisan config:clear

這個很重要

php artisan storage:link


查看完整回答
反對 回復 2023-05-26
  • 4 回答
  • 0 關注
  • 202 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號