当前位置: 首页 > 知识库问答 >
问题:

laravel在上载新图像时无法删除旧图像

王鹏飞
2023-03-14

为什么我上传新图片时不能删除我的旧图片?

这是我用来存储数据和图像的控制器。我的文件图像名由nama_post_adps和$imageName组合存储,其中$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');

        }

    }

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

我尝试解除关联(),但它不能工作,并显示错误:解除关联('post/azsi/...')没有这样的文件或目录,但字段不能更新。


共有1个答案

司马彬
2023-03-14

你做错了。

首先获取存量数据,检查请求是否有文件,然后删除旧文件,然后更新它

        $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);
 类似资料:
  • 我的makeWhiteTransparent方法如下所示: 我尝试将graphics.drawImage(newImage,null,0,0)更改为graphics.drawImage(newImage,0,0,null),并按照建议将TYPE_4BYTE_ABGR更改为TYPE_INT_ARGB,但没有任何效果。错误仍然存在。

  • 我无法上载firebase存储上的配置文件图像。我正在把烤面包片上的错误打印出来。为什么会出现这种情况?我无法解决这个问题,我审查了我的代码很多次。问题可能是什么?我如何调整我的代码以使其正常工作?提前向大家表示感谢。

  • 我正在尝试加载存储在应用程序文件夹上的图像当我打开活动时,我从logcat收到了这个错误: 1-20 01:30:40.125 14331-14331/mx.eusaga。af W/ImageView:无法打开内容:content://mx.eusaga.af.fileprovider/imagenes/1-db384fa8-f28b-4595-abbf-d45d38fd4036.jpgjava.

  • 我想选择多个图像,并给这些图像一个按钮,以便用户可以删除图像以及。我可以做图像的预览,但我不能删除图像后预览。 这是我的javascript代码 这是我的HTML代码,其中id=list是图像显示为缩略图的区域: 如何插入删除选项与每一个图像?

  • 我试图在Firebase存储中使用Firebase上传图像,但文件不能完全上传。它只显示图像的大小9字节,下载时无法预览。 这是我使用的代码:- 我使用的反应本地图像作物选择器。我使用Firebase,但不是反应本机Firebase。请帮助!

  • 我使用的代码: 错误: C:\Users\Dell\PycharmProjects\ATF_TestOrder\venv\Scripts\python.exe C:/Users/Dell/PycharmProjects/ATF_TestOrder/ATF_TestOrder/ATF_TestOrder.py回溯(最后一次调用):driver.switch_至_frame(“上载映像”)文件第18行