如何从Laravel中的文件夹和数据库中删除文件或图像?

时间:2017-08-07 16:00:38

标签: php mysql laravel

我创建了一个注册表单。我创建了一个表来显示数据库中的所有数据。并且有一个名为Delete的按钮,我已经传递了唯一的ID。单击“删除”按钮时,它将从“数据库”中删除数据。但是,我想从数据库和文件夹中删除文件或图像。 我的文件和图像存储在公用文件夹中。

我该如何解决这个问题?

  

删除按钮代码。 (RegView.blade.php)

@foreach($data as $value )
<tr>
<td> <a href="delete{{ $value->id }}"><input type="submit" name="delete" value="Delete" class="btn-danger"></a> </td>
</tr>
@endforeach
  

控制器代码。 (RegViewController.blade.php)

 function delete($id)
    {
        DB::table('academic')->where('id',$id)->delete();
        return redirect('RegView');
    }
  

这是我创建的路线。

Route::get('delete{id}','RegViewController@delete');

2 个答案:

答案 0 :(得分:1)

我可以提出一个解决方案,即:设置查询构建器以查找文件:

$query = DB::table('academic')->where('id',$id);

假设file_path是一个保存表中路径的字段

$files_to_delete = $query->pluck('file_path')->toArray(); //keeping the result in a php 
$query->delete(); //now deleting
Storage::delete($files_to_delete);
  

PS:您可以在Laravel docs中阅读有关使用存储的类似方法的更多信息,并且文档中只有一个重要信息如下:

enter image description here

这意味着它会查找“storage / app”目录以查找该文件。

答案 1 :(得分:1)

$pathToYourFile = 'example/someimage.jpeg';// get file path from table
if(file_exists($pathToYourFile)) // make sure it exits inside the folder
{
  unlink($pathToYourFile); // delete file/image
  // and delete the record from database
}