我编写了一个产品注册程序,然后上传了一张图片。此图像保存到公共(public)/存储/产品。有一个输入字段用于输入图像的名称,图像被赋予这个名称,该名称与图像扩展名一起保存在数据库中。我想知道如何在单击删除时从 public/storage/products 文件夹中删除此图像。
我下面试过的方法没用
Controller :
public function store(Request $request)
{
$nameFile = $request->input('imageName', '');
if($request->file('imageProduct')->isValid()){
$nameFile .= '.' . $request->file('imageProduct')->getClientOriginalExtension();
$request->file('imageProduct')->storeAs('products', $nameFile);
}
$product = new Product();
$product->name = $request->input('name');
$product->price = $request->input('price');
$product->imageName = $nameFile;
$product->save();
return redirect()->route('ProductControllerIndex');
}
public function destroy($id)
{
$products = Product::all();
$filePathName = 'products/' . $products->imageName;
if( file_exists($filePathName) ){
unlink($filePathName);
}
// $delete = Product::find($id);
// if(!$delete)
// return redirect()->route('ProductControllerCreate');
// $delete->delete();
// return redirect()->route('ProductControllerCreate');
}
}看法:
<form action="{{ route('ProductControllerDestroy', $product->id) }}" method="post">
@csrf
@method('DELETE')
<input type="submit" value="Remover">
</form>
最佳答案
您在那里添加了公共(public)路径。检查下面的代码。
$product = Product::find($id);
$filePathName = public_path().'/products/'. $products->imageName;
if( file_exists($filePathName) ){
unlink($filePathName);
}
关于laravel - 如何使用表单从公众中删除图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62720029/