laravel 上传新图片时无法删除旧图片

laravel Can't delete old image when uploaded new image

为什么我上传新图片时旧图片无法删除?

这是我用来存储数据和图像的控制器。 我的文件图像名称是 nama_post_adps$imageName 的存储组合,其中查询 getClientOriginalName();

  public function update(Request $request, Adopsi $adopsi, $id)
    {
        $getParentJenisHewan = JenisHewan::where("id", $request->jenis_hewan_id)->value("nama_jenis_hewan");
        $getParentRasHewan = RasHewan::where("id", $request->ras_hewan_id)->value("nama_ras_hewan");

        $imageSize = $request->file('image_post_adps')->getSize();
        $imageName = $request->file('image_post_adps')->getClientOriginalName();
        $pathstorage = $request->file('image_post_adps')->storeAs('public/post/adopsi',$request->nama_post_adopsi.'-'.$imageName);
       
        $adopsiAttr = $this->validasiRequest();
       
        $adopsiAttr = $request->all();
        $adopsiAttr['nama_jenis_hewan'] =  $getParentJenisHewan;
        $adopsiAttr['nama_ras_hewan'] = $getParentRasHewan;
        $adopsiAttr['image_post_adps'] = $imageName;
        $adopsiAttr['path-storage'] = $pathstorage;
        $adopsiAttr['size'] = $imageSize;
        
        $adopsi = Adopsi::find($id)->update($adopsiAttr);
        $delete = Adopsi::find($id);
        unlink('app/public/post/adopsi/'.$delete->nama_post_adopsi.'-'.$delete->image_post_adps);

        // if ($request->file('image_post_adps')) {
        //     Storage::disk('public')->delete('/post/adopsi/'.$request->nama_post_adopsi.'-'.$request->image_post_adps);
        // }

      

        if($adopsi) {
            return redirect()->route('adopsi.index')->with('success','Data '.$request->nama_post_adopsi .' telah mendapatkan update terbaru.');
        } else {
            return redirect()->route('adopsi.index')->with('error','Data gagal'.$request->nama_post_adopsi .'diupdate');

        }

    }

上面的方法与我的 store 方法完全相同。

我试过 unlink() 但它无法工作并显示 error : unlink('post/adopsi/..') no such file or directory ,但字段不能'待更新。然后我决定使用 Storage::disk('public')->delete ,字段得到更新,图像随着新的变化而旧的仍然不变。

你做错了。

首先获取现有数据并检查请求是否有文件然后删除旧的然后更新它

        $delete = Adopsi::find($id);
     

         if ($request->file('image_post_adps')) {
             Storage::disk('public')->delete('/post/adopsi/'.$delete->nama_post_adopsi.'-'.$delete->image_post_adps);
       }

 $adopsi = Adopsi::find($id)->update($adopsiAttr);