[在此处输入图片描述] [1]不是吗?但尽管它存储了图像,但它并未删除图像
如果不是这样,那么我该如何覆盖 控制器?
编辑过(建议):我在filesystem.php中添加了新磁盘“ public”,并通过添加Storage Facade修改了控制器。
在我的controller.php
x_grey.png 38x38 in drawable-hdpi
x_grey.png 25x25 in drawable-mdpi
x_grey.png 50x50 in drawable-xhdpi
x_grey.png 75x75 in drawable-xxhdpi
x_grey.png 100x100 in drawable-xxxhdpi
在我的filesystems.php中
public function update(Request $request, $userId)
{
$oldFileName='';
$filenameToStore='';
//saving the user
$user=User::find($userId);
$user->first_name = $request->input('first_name');
//for the image
if ($request->hasFile('user_image')) {
$image = $request->file('user_image');
//get filename
$filenameToStore= $image->getClientOriginalName();
$location = public_path('chbea/users/images/' .$filenameToStore);
Image::make($image)->save($location);
$oldFileName =$user->user_image;
Storage::disk('public')->delete('chbea/users/images/'.
$oldFileName);
//saving user image name
$user->user_image = $filenameToStore;
}
$user->save();
Session::flash('success', 'The Student Details was Updated!');
return redirect()->route('students.index');
}
当我输出dd时,path不是预期的。
<?php
return [
'default' => env('FILESYSTEM_DRIVER', 'local'),
'cloud' => env('FILESYSTEM_CLOUD', 's3'),
'disks' => [
'local' => [
'driver' => 'local',
'root' => public_path('images/'),
],
'public' => [
'driver' => 'local',
'root' => public_path(),
],
/*'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],*/
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
],
],
];
答案 0 :(得分:0)
因此,这里的问题是,当您像在filesystems.php
配置中那样设置文件系统时,会将文件系统监禁到您定义的路径。因此,根据您的情况,您的local
文件系统将被监禁到public_path('allimages/')
。您不能使用该磁盘将其移出该文件系统。
您可以创建另一个被监禁到其他位置的磁盘:
'disks' => [
'local' => [
'driver' => 'local',
'root' => public_path('allimages/'),
],
'public' => [
'driver' => 'local',
'root' => public_path()
],
在这里,我创建了另一个名为public
的磁盘,并将该磁盘插入了公共路径。然后,您可以像这样使用存储外观:
Storage::disk('public')->delete('project/users/images/' . $oldFileName);
这将删除由您提供的相对于public
磁盘根目录的路径所标识的文件。
答案 1 :(得分:0)
所以这终于解决了……
$oldFileName =$user->user_image;
Storage::disk('customDisk')->delete('chbea/users/images/' . $oldFileName);
和我的filesystems.php
'customDisk' => [
'driver' => 'local',
'root' => public_path(),
],
最重要的是运行此命令,否则您将得到驱动程序不支持的错误
php artisan config:cache