laravel-admin的图片删除实例


Posted in PHP onSeptember 30, 2019

对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的图片删除实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
屏蔽浏览器缓存另类方法
Oct 09 PHP
使用PHP实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
Oct 09 PHP
destoon首页调用求购供应信息的地区名称的方法
Aug 21 PHP
typecho插件编写教程(一):Hello World
May 28 PHP
php实现数组中索引关联数据转换成json对象的方法
Jul 08 PHP
php获取英文姓名首字母的方法
Jul 13 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
Oct 20 PHP
py文件转exe时包含paramiko模块出错解决方法
Aug 12 PHP
使用PHP免费发送定时短信的实例
Oct 24 PHP
php解决DOM乱码的方法示例代码
Nov 20 PHP
PHP实现的简单排列组合算法应用示例
Jun 20 PHP
Docker搭建自己的PHP开发环境
Feb 24 PHP
laravel-admin的多级联动方法
Sep 30 #PHP
php更新cookie内容的详细方法
Sep 30 #PHP
使用laravel的migrate创建数据表的方法
Sep 30 #PHP
Yii2.0框架behaviors方法使用实例分析
Sep 30 #PHP
php解决约瑟夫环算法实例分析
Sep 30 #PHP
php使用curl伪造浏览器访问操作示例
Sep 30 #PHP
laravel-admin 在列表页添加自定义按钮的例子
Sep 30 #PHP
You might like
php 移除数组重复元素的一点说明
2008/11/27 PHP
图解找出PHP配置文件php.ini的路径的方法
2014/08/20 PHP
php+mysql实现数据库随机重排实例
2014/10/17 PHP
PHP中文竖排转换实现方法
2015/10/23 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
javascript实现二分查找法实现代码
2007/11/12 Javascript
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
JavaScript中的Math.atan2()方法使用详解
2015/06/15 Javascript
js学习笔记之事件处理模型
2016/10/31 Javascript
javascript显示系统当前时间代码
2016/12/29 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
JavaScript实现随机数生成器(去重)
2017/10/13 Javascript
redux.js详解及基本使用
2019/05/24 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
vscode vue 文件模板的配置方法
2019/07/23 Javascript
python实现简单的socket server实例
2015/04/29 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
python之当你发现QTimer不能用时的解决方法
2019/06/21 Python
python实现图像拼接功能
2020/03/23 Python
opencv python 对指针仪表读数识别的两种方式
2021/01/14 Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
2021/02/20 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
css3设置box-pack和box-align让div里面的元素垂直居中
2014/09/01 HTML / CSS
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
GEOX鞋美国官方网站:意大利会呼吸的鞋
2017/07/12 全球购物
Timberland法国官网:购买靴子、鞋子、衣服、夹克和配饰
2019/11/30 全球购物
迟到检讨书大全
2014/01/25 职场文书
关于诚信的活动方案
2014/08/18 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
市场部岗位职责
2015/02/12 职场文书
大学学生个人总结
2015/02/15 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
优秀范文:读《红岩》有感3篇
2019/10/14 职场文书