where do you try to delete the previous image?
Jun 2, 2022
9
Level 1
laravel 9 api : delete file from folder when updating post
I want to delete previously uploaded image after updating via postman but it wont delete the previous image file.
class SocialPostController extends Controller {
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
* @throws \Illuminate\Validation\ValidationException
*/
public function store(Request $request)
{
$this->validate($request, [
'name' => 'required|unique:social_posts,name',
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:3040',
'likes_count' => 'required|numeric',
'comment_count' => 'required|numeric',
'url' => 'required',
'status' => 'required|in:active,inactive',
'sm_page_id' => 'required|numeric',
]);
$name = $request->file('image')->getClientOriginalName();
$path = $request->file('image')->storeAs('public/images', $name);
$attribute = array_merge($request->all(), ['user_id' => Auth::id()]);
$social_post = SocialPost::create($attribute);
return response(['social_post' => $social_post, 'message' => 'Successful'], 200);
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$user = SocialPost::find($id);
return response(['social_post' => $user, 'message' => 'Successful'], 200);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, SocialPost $social_post)
{
if ($request->file('image') != '') {
$path =storage_path('app/public/images/') .$social_post->image;
if (File::exists($path)) {
File::delete($path);
}
$name = $request->file('image')->getClientOriginalName();
$path = $request->file('image')->storeAs('public/images', $name);
} else {
$name = $social_post->image;
}
$attribute = array_merge($request->all(), ['user_id' => Auth::id()]);
$social_post->update($attribute);
return response(['social_post' => $social_post, 'message' => 'Successful'], 200);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
DB::table("social_posts")->where('id', $id)->delete();
return response()->json([
'success' => true,
'message' => 'SocialPosts Deleted successfully.'
], 200);
}
}
Please or to participate in this conversation.