为了账号安全,请及时绑定邮箱和手机立即绑定

如何在上传时从公共文件夹中删除旧图像 - 使用 Laravel

如何在上传时从公共文件夹中删除旧图像 - 使用 Laravel

PHP
繁花如伊 2021-10-15 10:39:18
我的公共文件夹 profile_images 中有文件夹,我的图像存储在其中我想在上传新图像时从此文件夹中删除旧图像。这是我的整个控制器代码:如何在上传时删除旧文件。您的帮助将不胜感激。                   public function uploadImage(Request $request){    $user_id = $request->input('user_id');    $image = $request->input('image');    $r = [        'user_id' => $user_id,    ];    $validator = Validator::make($r, [        'user_id' => 'required|exists:users,id',    ]);    if($validator->fails()) {        return response(['status' => false, 'message' => 'Validation Errors', 'errors' => $validator->errors()->all()], 500);    }    if ($validator->fails()) {        return response([            'status' => false,            'message' => __('messages.validation_errors'),            'errors' => $validator->errors()->all()], 200);    }    try {        $path = public_path('profile_images');        @mkdir($path, '0777', true);        $image = base64_decode($image);        $imageName = str_random(10).'.'.'png';        Storage::disk('profile-image')->put($imageName, $image);        $path = asset('public/profile_images/' . $imageName);        $this->userBasicInfo->where('user_id', $user_id)->update(['profile_pic' => $path]);        return response(['status' => true, 'message' => 'Image Uploaded successfully', 'data' => ['profile_image' => $path]], 200);    } catch (\Exception $ex) {        return response(['status' => false, 'message' => $ex->getMessage()], 500);    }}
查看完整描述

2 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

删除公共目录中任何文件的默认方法

File::delete(public_path('file path and name'));


查看完整回答
反对 回复 2021-10-15
?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

Laravel 有删除文件的方法:

Storage::delete('profile-image/old_file.jpg');

另外,您应该记住旧文件名以便将来删除它:

$imageName = str_random(10).'.'.'png';

将此 imageName 保存在某处或使用您的 user_id 来了解您要删除的图像。


查看完整回答
反对 回复 2021-10-15
  • 2 回答
  • 0 关注
  • 158 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信