laravel-admin的图片删除实例
发布:smiling 来源: PHP粉丝网 添加日期:2021-12-26 16:17:01 浏览: 评论:0
对laravel-admin的图片上传机制有深深的疑惑,在用户信息页面上删除头像图片就会报错,当时用的是1.4的,后来更新1.5 发现删除按钮直接消失了,在使用过程中,要是在form中正常使用image就好用,稍微写的复杂一点(比如我把$form->image写在tab里的时候)就不好用了。
针对这个问题写了一个方法,(也不知道适不适用哈)
- <?php
- namespace App\Admin\Controllers;
- use App\Http\Controllers\Controller;
- use Carbon\Carbon;
- use Encore\Admin\Controllers\ModelForm;
- use Encore\Admin\Form\Field\File;
- use Illuminate\Http\UploadedFile;
- class FileController extends Controller
- {
- use ModelForm;
- public function index($type,$file=null,$ajax=true,$file_name="")
- {
- $file = $file ? $file : $_FILES['img'];
- if($file['error']!=0){
- $data = array('status'=>false,'msg'=>trans('admin::lang.Upload_error'));
- return $ajax ? json_encode($data) : $data;
- }
- //得到文件名称
- $name = $file['name'];
- $img_type = strtolower(substr($name,strrpos($name,'.')+1)); //得到文件类型,并且都转化成小写
- $allow_type = array('jpg','jpeg','gif','png'); //定义允许上传的类型
- //判断文件类型是否被允许上传
- if(!in_array($img_type, $allow_type)){
- $data = array('status'=>false,'msg'=>trans('admin::lang.imgtype_error').$img_type);
- return $ajax ? json_encode($data) : $data;
- }
- //判断是否是通过HTTP POST上传的
- if(!is_uploaded_file($file['tmp_name'])){
- $data = array('status'=>false,'msg'=>trans('admin::lang.post_img'));
- return $ajax ? json_encode($data) : $data;
- }
- $file_name = $file_name ? $file_name.'.'.$img_type : md5(uniqid()).Carbon::now()->timestamp.'.'.$img_type;
- if($type=='attr_img'){
- $upload_path = public_path().'/upload/goods/attr_img/'; //上传文件的存放路径
- $path = "goods/attr_img/";
- }elseif($type=='goods'){
- $upload_path = public_path().'/upload/goods/'; //上传文件的存放路径
- $path = "goods/";
- }else{
- $upload_path = public_path().'/upload/'.$type.'/'; //上传文件的存放路径
- $path = $type."/";
- }
- if(!is_dir($upload_path)){
- @mkdir($upload_path);
- }
- //开始移动文件到相应的文件夹
- if(move_uploaded_file($file['tmp_name'],$upload_path.$file_name)){
- $data['status'] = true;
- $data['path'] = $path.$file_name;
- $data['view_path'] = config('admin.upload.host').$path.$file_name;
- }else{
- $data = array('status'=>false,'msg'=>trans('admin::lang.moveimg_error'));
- return $ajax ? json_encode($data) : $data;
- }
- if($ajax){
- return json_encode($data);
- }else{
- return $data;
- }
- }
- public function multipleImg($type,$files,$ajax=true){
- $imgs = array('status'=>true);
- for($i=0;$i<count($files['name']);$i++){
- $file['name'] = $files['name'][$i];
- $file['type'] = $files['type'][$i];
- $file['tmp_name'] = $files['tmp_name'][$i];
- $file['error'] = $files['error'][$i];
- $file['size'] = $files['size'][$i];
- $data = $this->index($type,$file,false);
- if($data['status']){
- $imgs['path'][$i] = $data['path'];
- $imgs['view_path'][$i] = $data['view_path'];
- }else{
- return $ajax ? json_encode(array('status'=>false,'msg'=>$data['msg'])) : array('status'=>false,'msg'=>$data['msg']);
- }
- }
- return $ajax ? json_encode($imgs) : $imgs;
- }
- }
然后在form中这么写:
$form->image('img','图片')->deleteUrl(admin_url('mconfig/deleteUrl/' . img))->uniqueName()->value('1.jpg');
其中value是默认显示的图片,uniquename是使用随机生成的文件名,deleteUrl是删除图片的路径
再在form方法后新建方法,删除数据库里的数据
- public function deleteUrl($img){
- $mconfig = MConfigModel::where('img',$img)->first();
- $path = config('admin.upload.host').$mconfig->val;
- if(file_exists($path)){
- @unlink ($path);
- }
- $mconfig->val = "";
- $mconfig->save();
- return array('status'=>true);
- }
最后别忘记添加相应的路由:
$router->put('/mconfig/deleteUrl/{img}','MConfigController@deleteUrl');
Tags: laravel-admin laravel图片删除
相关文章
- ·laravel-admin 在列表页添加自定义按钮的例子(2021-12-25)
- ·laravel-admin的多级联动方法(2021-12-26)
- ·laravel-admin解决表单select联动时,编辑默认没选上的问题(2021-12-26)
- ·Laravel-admin之修改操作日志的方法(2021-12-26)
- ·基于Laravel-admin 后台的自定义页面用法详解(2021-12-26)
- ·laravel-admin 中列表筛选方法(2021-12-27)
- ·在laravel-admin中列表中禁止某行编辑、删除的方法(2021-12-27)
- ·laravel-admin 后台表格筛选设置默认的查询日期方法(2021-12-27)
- ·laravel-admin select框默认选中的方法(2021-12-27)
- ·关于laravel后台模板laravel-admin select框的使用详解(2021-12-27)
- ·浅谈laravel-admin的sortable和orderby使用问题(2021-12-27)
- ·基于laravel-admin 后台 列表标签背景的使用方法(2021-12-27)
- ·解决laravel-admin 自己新建页面里 js 需要刷新一次的问题(2021-12-27)
- ·laravel-admin 实现给grid的列添加行数序号的方法(2021-12-27)
- ·关于Laravel-admin的基础用法总结和自定义model详解(2021-12-27)
- ·laravel-admin表单提交隐藏一些数据,回调时获取数据的方法(2021-12-27)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)