怎么删掉laravel(laravel-admin的图片删除实例)
类别:编程学习 浏览量:858
时间:2021-10-14 00:19:36 怎么删掉laravel
laravel-admin的图片删除实例对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' ); |
以上这篇laravel-admin的图片删除实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/qq_33541033/article/details/78709576
您可能感兴趣
- laravel 权限管理(修改Laravel自带的认证系统的User类的命名空间的步骤)
- laravel命令大全详解(Laravel框架中缓存的使用方法分析)
- laravel自定义数据库驱动(laravel框架数据库配置及操作数据库示例)
- laravel框架的业务流程顺序(Laravel+Dingo/Api 自定义响应的实现)
- laravel请求耗时(Laravel统计一段时间间隔的数据方法)
- phplaravel怎么优化(laravel执行php artisan migrate报错的解决方法)
- laravel数据转换层(laravel通过a标签从视图向控制器实现传值)
- laravel认证系统(Laravel框架Auth用户认证操作实例分析)
- laravel5.2模型返回数组(解决Laravel5.5下的toArray问题)
- laravel设置读写权限(解决laravel上传图片之后,目录有图片,但是访问不到404的问题)
- laravel开发api实例(Laravel框架集成UEditor编辑器的方法图文与实例详解)
- laravel关闭错误提示(解决laravel session失效的问题)
- laravel5.7项目实战(基于Laravel 5.2 regex验证的正确写法)
- laravel api 调试(Laravel框架自定义公共函数的引入操作示例)
- laravel 开发自定义组件(laravel实现上传图片并在页面显示的例子)
- laravel常用的辅助函数介绍(Laravel框架表单验证操作实例分析)
- 0 1 岁婴儿最强作息指南,照着做养出天使宝宝(01岁婴儿最强作息指南)
- 沪上这16所高校 萌新 礼包开箱 哪一款让你心动(沪上这16所高校萌新)
- 她救了被绑架的他,而这一切竟是一场阴谋...(她救了被绑架的他)
- 冬季养殖这6种阴生植物,方便又好养,你家有么(冬季养殖这6种阴生植物)
- 阴生植物为什么不怕照不到阳光(阴生植物为什么不怕照不到阳光)
- 阴生环境 耐阴地被植物,你知道哪些(阴生环境耐阴地被植物)
热门推荐
- 选择哪个平台注册虚拟主机好(怎么选择好的便宜云虚拟主机?分享挑选便宜云虚拟主机的小技巧)
- vue调用后台接口实现预览(vue实现集成腾讯TIM即时通讯)
- sql server占cpu高
- docker暴露端口无法访问(完美解决Windows10下无法对docker容器进行端口访问的操作)
- ftp两种传输协议有什么区别(FTP与SFTP的区别 知多少)
- http服务器使用教程(HTTP与HTTP协作的Web服务器访问流程图解)
- javascript中需要注意的几个细节
- mysql limit越大越慢(MySQL limit分页大偏移量慢的原因及优化方案)
- thinkphp5 api开发(thinkphp5框架前后端分离项目实现分页功能的方法分析)
- 云服务器ecs更换可用区(在阿里云管理控制台重置ECS实例的密码并重启服务器后无法访问该服务器)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9