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

时间:2019-07-17 08:01:41

标签: php laravel image file delete-file

我的公用文件夹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 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

Laravel具有删除文件的方法:

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

此外,您还应该记住旧文件名,以便将来将其删除:

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

将此图像名称保存在某个地方,或使用您的user_id知道要删除的图像。