【发布时间】:2021-08-22 14:53:01
【问题描述】:
为什么我上传新图片时无法删除旧图片?
这是我用来存储数据和图像的控制器。
我的文件图像名称存储在 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,字段得到更新,图像变化与新旧仍然相同。
【问题讨论】:
-
\Illuminate\Support\Facades\Storage::disk('public')->delete('post/adopsi/'.$delete->nama_post_adopsi.'-'.$delete->image_post_adps )
-
如何简化您的建议?
-
我的意思是简化代码
-
从存储文件夹中删除文件的最简单代码
-
不是我的意思,没有\Illuminate.....我怎么写?
标签: php laravel controller laravel-8