• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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;$icount($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的图片删除实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • laravel实现上传图片的两种方式小结
    • 利用laravel+ajax实现文件上传功能方法示例
    • 在laravel5.2中实现点击用户头像更改头像的方法
    上一篇:laravel-admin的多级联动方法
    下一篇:laravel-admin解决表单select联动时,编辑默认没选上的问题
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    laravel-admin的图片删除实例 laravel-admin,的,图片,删除,