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 相关文章推荐
用PHP实现小型站点广告管理(修正版)
Oct 09 PHP
可定制的PHP缩略图生成程式(需要GD库支持)
Mar 06 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
Aug 31 PHP
php结合curl实现多线程抓取
Jul 09 PHP
PHP之正则表达式捕获组与非捕获组(详解)
Jul 29 PHP
php+html5实现无刷新图片上传教程
Jan 22 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
PHP实现随机数字、字母的验证码功能
Aug 01 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 11 PHP
Laravel框架源码解析之反射的使用详解
May 14 PHP
浅谈php常用的7大框架的优缺点
Jul 20 PHP
php修改word的实例方法
Nov 17 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
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
php操作xml
2013/10/27 PHP
PHP修改session_id示例代码
2014/01/08 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
php生成唯一数字id的方法汇总
2015/11/18 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
PHP实现链表的定义与反转功能示例
2018/06/09 PHP
laravel 解决强制跳转 https的问题
2019/10/22 PHP
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
jQuery下拉友情链接美化效果代码分享
2015/08/26 Javascript
js中的数组对象排序分析
2018/12/11 Javascript
深入了解js原型模式
2019/05/30 Javascript
python实现根据月份和日期得到星座的方法
2015/03/27 Python
在Python的web框架中配置app的教程
2015/04/30 Python
Python Nose框架编写测试用例方法
2017/10/26 Python
Python 将pdf转成图片的方法
2018/04/23 Python
python-docx修改已存在的Word文档的表格的字体格式方法
2018/05/08 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
pygame实现非图片按钮效果
2019/10/29 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
2012/12/13 HTML / CSS
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
创建无烟单位实施方案
2014/03/29 职场文书
门前三包责任书
2014/04/15 职场文书
省文明单位申报材料
2014/05/08 职场文书
文明礼仪演讲稿
2014/05/12 职场文书
室内设计专业自荐信
2014/05/31 职场文书
试用期自我评价范文
2015/03/10 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
公司仓库管理制度
2015/08/04 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书
2022微信温控新功能上线
2022/05/09 数码科技
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL