laravel-admin的图片删除实例
时间:2022-07-27
本文章向大家介绍laravel-admin的图片删除实例,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
对laravel-admin的图片上传机制有深深的疑惑,在用户信息页面上删除头像图片就会报错,当时用的是1.4的,后来更新1.5 发现删除按钮直接消失了,在使用过程中,要是在form中正常使用image就好用,稍微写的复杂一点(比如我把$form- image写在tab里的时候)就不好用了。
针对这个问题写了一个方法,(也不知道适不适用哈)
<?php
namespace AppAdminControllers;
use AppHttpControllersController;
use CarbonCarbon;
use EncoreAdminControllersModelForm;
use EncoreAdminFormFieldFile;
use IlluminateHttpUploadedFile;
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的图片删除实例就是小编分享给大家的全部内容了,希望能给大家一个参考。
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 来玩 TencentOS tiny 物联网终端操作系统
- LeetCode | 66.加一
- PNN:Product-based Neural Networks for User Response Prediction
- Redis | Redis Pub/Sub相关命令
- nginx upstream header过大是啥情况
- 8个写JavaScript代码的小技巧
- .NET Core中间件与依赖注入的一些思考
- 如何审计MySQL 8.0中的分类数据查询?
- 聊一个 GitHub 上开源的 RBAC 权限管理系统,很6!
- Spring AOP,应该不会有比这更详细的介绍了!
- 我又发现 Spring Security 中一个小秘密!
- OpenCV的实用图像处理操作案例分享
- CentOS 7上搭建 Zabbix4.0,一次性成功,收藏了!
- 超全!我整理一波最常用的开源项目
- 【NLP】竞赛必备的NLP库