如何从laravel 5中的public / images文件夹中删除图像文件?
我在这个网站上找到了一些例子,但我知道他们只是在record table
中使用了文件名,但是我使用的是URL
,例如localhost/project/uploads/filename.jpg
我的record table
。所以,如果我这样做:
$image_path = $data->image; // the value is : localhost/project/image/filename.format
if(File::exists($image_path)) {
File::delete($image_path);
}
文件未被删除
帮助,谢谢
答案 0 :(得分:12)
如果要从服务器中删除图像,则必须引用目录服务器中的文件位置,这意味着您无法通过URL链接引用它来删除它。
通常,Laravel 5文件位于 public 文件夹中。
示例:您的文件位于 public / images
中$image_path = "/images/filename.ext"; // Value is not URL but directory file path
if(File::exists($image_path)) {
File::delete($image_path);
}
如果我可以通过参考网址从服务器删除图片,那么Google是第一个目标:)
答案 1 :(得分:2)
这是我删除图像的操作:
public function SliderDelete(String $slider_id)
{
$slider = Slider::findOrFail($slider_id);
$image_path = public_path("\storage\images\sliders\\") .$slider->photo;
if(File::exists($image_path)) {
File::delete($image_path);
}
else{
$slider->delete();
//abort(404);
}
$slider->delete();
return response()->json(['success'=>'Slider deleted successfully!']);
}
答案 2 :(得分:1)
您可以使用普通的PHP删除文件关键字(@unlink)
$image_path = "the name of your image path here/".$request->Image;
if (file_exists($image_path)) {
@unlink($image_path);
}
答案 3 :(得分:1)
$filename = public_path($fileloc);
if(File::exists($filename)) {
File::delete($filename);
}
答案 4 :(得分:1)
在 Laravel 8 中,你喜欢这样做
// import Storage class
use Illuminate\Support\Facades\Storage;
Storage::disk('public')->delete('path-of-file');
你可以使用你喜欢的磁盘
Storage::disk('s3')->delete('path-of-file');
答案 5 :(得分:0)
调用此函数并传递两个参数 $ filepath =文件存在的路径 $ filename =文件名称
public static function UnlinkImage($filepath,$fileName)
{
$old_image = $filepath.$fileName;
if (file_exists($old_image)) {
@unlink($old_image);
}
}
答案 6 :(得分:0)
我今天遇到了同样的问题 但现在文件已通过此代码删除
$image_path = $data->image;
if(file_exists($image_path)) {
File::delete($image_path);
}
从根本上说,对我来说,难题是如果条件没有返回,那是真的。并且该语句没有执行。
btw我将文件存储在laravel中的公共文件夹中
希望这对某人有帮助。
答案 7 :(得分:0)
public function destroy($id)
{
$imagePath = YourModelName::select('image')->where('id', $id)->first();
$filePath = $imagePath->image;
if (file_exists($filePath)) {
unlink($filePath);
YourModelName::where('id', $id)->delete();
}else{
YourModelName::where('id', $id)->delete();
}
}