gpt4 book ai didi

Laravel 8:存储::删除(文件)返回false

转载 作者:行者123 更新时间:2023-12-05 09:07:25 27 4
gpt4 key购买 nike

从昨天开始,我无法从文件夹中删除文件这是我在 Controller 中的代码。的公共(public)功能 update_avatar(请求 $request){

    // Handle the user upload of avatar
if ($request->hasfile('avatar')) {
$avatar = $request->file('avatar');
$filename = time() . '.' . $avatar->getClientOriginalExtension();
if (auth()->user()->avatar) {
// dd('/uploads/avatars/'. auth()->user()->avatar);
Storage::delete('/uploads/avatars/'. auth()->user()->avatar);
//dd(Storage::delete('/uploads/avatars/'. auth()->user()->avatar));
}
Image::make($avatar)->resize(500, 500)->save(public_path('/uploads/avatars/' . $filename));

$user = Auth::user();
$user->avatar = $filename;
$user->save();
}

return view('profile', array('user' => Auth::user()) );

}

调试方法后并没有删除文件夹中的文件

dd('/uploads/avatars/'.auth()->user()->avatar);

我正确地得到了文件,但是当我调试时

dd(Storage::delete('/uploads/avatars/'.auth()->user()->avatar));

结果是FALSE

ps: 我使用的是 laravel 8

最佳答案

一开始你在做 Storage::delete('/uploads/avatars/'.auth()->user()->avatar); 所以默认情况下如果你没有改变任何东西,磁盘设置为本地,

您可以从您的 config/filesystems.php(此处显示来自 laravel github 官方仓库(https://github.com/laravel/laravel/blob/8.x/config/filesystems.php#L44))

因此,如果您选择 Storage::disk('public')->delete($filename);,它会选择具有路径 app/public 的公共(public)磁盘,即使您可以手动添加(我没有测试过这个方法,所以不能保证成功。)

其次,如果您使用文件,从https://github.com/laravel/framework/blob/8.x/src/Illuminate/Filesystem/Filesystem.php#L262可以看出,它基本上调用了 php 的 unlink() 方法。基本上都是调用Illuminate/Filesystem/Filesystem中的delete方法,只是传递路径和调用方法不同。

所以你可以使用任何一个,

  • 使用Illuminate\Support\Facades\File文件::删除($文件名);
  • 使用 IIlluminate\Support\Facades\Storage Storage::disk('public')->delete($filename);(在 github 上)<
  • 从 php 中取消链接()

关于Laravel 8:存储::删除(文件)返回false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64837888/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com