Laravel 8 : Storage::delete (文件) return 假
Laravel 8 : Storage::delete (file) return false
从昨天开始,我无法从文件夹中删除文件
这是我在控制器中的代码。
的
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))
因此,如果您 select、Storage::disk('public')->delete($filename);
,它会 select public 的磁盘,路径为 app/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
; File::delete($filename);
- 使用
IIlluminate\Support\Facades\Storage
Storage::disk('public')->delete($filename);
(在 github 上)
- 从 php
取消链接()
从昨天开始,我无法从文件夹中删除文件 这是我在控制器中的代码。 的 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))
因此,如果您 select、Storage::disk('public')->delete($filename);
,它会 select public 的磁盘,路径为 app/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
;File::delete($filename);
- 使用
IIlluminate\Support\Facades\Storage
Storage::disk('public')->delete($filename);
(在 github 上) - 从 php 取消链接()