php layui实现前端多图上传实例


Posted in PHP onJuly 30, 2019

php结合layui前端实现多图上传

前端html代码

<div class="layui-upload">

  <button type="button" class="layui-btn layui-btn-normal" id="testList">请选择图片</button>

  <span class="num_pic"></span>

  <div class="layui-upload-list">

    <table class="layui-table">

      <thead>

        <tr>

          <th>文件名</th>

          <th id="pic">图片预览</th>

          <th>大小</th>

          <th>状态</th>

          <th id="cao">操作</th>

        </tr>

      </thead>

      <tbody id="demoList"></tbody>

    </table>

  </div>

  <button type="button" class="layui-btn" id="testListAction">开始上传</button>

    <span class="num_pic"></span>

</div>

js 代码

<script type="text/javascript">

  layui.use('upload', function() {

    var $ = layui.jquery,

      upload = layui.upload;

    //多文件列表示例

    var demoListView = $('#demoList'),

      uploadListIns = upload.render({

        elem: '#testList',

        url: "{url('pic/index/upload')}",

        accept: 'images',

        acceptMime: 'image/*',

        size: 8192,

        multiple: true,

        number: 400,

        auto: false,

        exts: 'jpg|png|jpeg',

        bindAction: '#testListAction',

        choose: function(obj) {

          var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列

          //读取本地文件

          obj.preview(function(index, file, result) {

            var tr = $(['<tr id="upload-' + index + '">', '<td>' + file.name + '</td>', '<td><img src="' + result + '" alt="' + file.name + '" style="width: 100px;height: 40px;"></td>', '<td>' + (file.size / 1014).toFixed(1) + 'kb</td>', '<td>等待上传</td>', '<td>', '<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>', '<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>', '</td>', '</tr>'].join(''));

            //单个重传

            tr.find('.demo-reload').on('click', function() {

              obj.upload(index, file);

              $("#upload-" + index).find("td").eq(2).html((file.size / 1014).toFixed(1) + 'kb');

            });

            //删除

            tr.find('.demo-delete').on('click', function() {

              delete files[index]; //删除对应的文件

              tr.remove();

              uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选

            });

            demoListView.append(tr);

            $(".num_pic").text("总共【" + demoListView.find("tr").length + "】张图片");

          });

        },

        done: function(res, index, upload) {

          if(res.code == 0) { //上传成功

            $("#cao").text("地址");

            var tr = demoListView.find('tr#upload-' + index),

              tds = tr.children();

            tds.eq(3).html('<span style="color: #5FB878;">上传成功</span>');

            tds.eq(4).html('<input type="text" name="imgs[]" value="' + res.file + '" class="layui-input" />'); //清空操作

            return delete this.files[index]; //删除文件队列已经上传成功的文件

          }

          this.error(index, upload);

        },

        allDone: function(obj) { //当文件全部被提交后,才触发

          layer.msg("上传文件数量:【" + obj.total + "】张,上传成功:【" + obj.successful + "】张,失败:【" + obj.aborted + "】", {

            time: 3000

          });

          console.log(obj.total); //得到总文件数

          console.log(obj.successful); //请求成功的文件数

          console.log(obj.aborted); //请求失败的文件数

        },

        error: function(index, upload) {

          var tr = demoListView.find('tr#upload-' + index),

            tds = tr.children();

          tds.eq(2).html('<span style="color: #FF5722;">上传失败</span>');

          tds.eq(4).find('.demo-reload').removeClass('layui-hide'); //显示重传

        }

      });

  });

</script>

后端代码

public function uploadAction(){

    $file=$_FILES['file'];

    $root_url = 'uploadfiles/pic/image/';

    if (!is_uploaded_file($file['tmp_name'])){

      $data = array('code'=>1,'msg'=>"错误");

      exit(json_encode($data,0));

    }

   /* $root_url.=date('Ymd').'/';*/

    $ext = pathinfo($file['name']);

    $num=makenum($this->memberinfo['id']);

    $root_url.=$num.'/';

    if (!is_dir($root_url)) {

      mkdir($root_url,0777, true);

    }

    $pa=file_list::get_file_list($root_url);

    $na=count($pa) + 1;

    if ($na<10){

      $name=$num.'-000'.$na;

    }elseif($na<100){

      $name=$num.'-00'.$na;

    }elseif($na<1000){

      $name=$num.'-0'.$na;

    }else{

      $name=$num.'-'.$na;

    }

    $n=$root_url.$name.".".$ext['extension'];

    $result=move_uploaded_file($file['tmp_name'],$n);

    if ($result){

      exit(json_encode(array("code"=>0,"msg"=>"ok","file"=>$n,"size"=>$file['size']),0));

    }else{

      exit(json_encode(array("code"=>1,"msg"=>"false","file"=>$n,"size"=>$file['size']),0));

    }

  }

上传效果:

php layui实现前端多图上传实例

php layui实现前端多图上传实例

以上就是php结合layui前端实现多图上传的全部知识点,感谢大家对三水点靠木的支持。

PHP 相关文章推荐
使用sockets:从新闻组中获取文章(二)
Oct 09 PHP
php小技巧 把数组的键和值交换形成了新的数组,查找值取得键
Jun 02 PHP
openPNE常用方法分享
Nov 29 PHP
测试php函数的方法
Nov 13 PHP
php导出excel格式数据问题
Mar 11 PHP
php设计模式之简单工厂模式详解
Sep 04 PHP
页面利用渐进式JPEG来提升用户体验度
Dec 01 PHP
PHP实现支持SSL连接的SMTP邮件发送类
Mar 05 PHP
PHP数组游标实现对数组的各种操作详解
Jan 26 PHP
Symfony2实现在doctrine中内置数据的方法
Feb 05 PHP
php求今天、昨天、明天时间戳的简单实现方法
Jul 28 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
Mar 13 PHP
安装docker和docker-compose实例详解
Jul 30 #PHP
docker-compose部署php项目实例详解
Jul 30 #PHP
php 使用mpdf实现指定字段配置字体样式的方法
Jul 29 #PHP
laradock环境docker-compose操作详解
Jul 29 #PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
Jul 26 #PHP
PHP中散列密码的安全性分析
Jul 26 #PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
Jul 26 #PHP
You might like
PHP编程网上资源导航
2006/10/09 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
javascript if条件判断方法小结
2014/05/17 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
JavaScript中 ES6 generator数据类型详解
2016/08/11 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
react-router实现跳转传值的方法示例
2017/05/27 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
简单介绍react redux的中间件的使用
2018/04/06 Javascript
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
vue使用screenfull插件实现全屏功能
2020/09/17 Javascript
WebPack工具运行原理及入门教程
2020/12/02 Javascript
Python实现抓取网页并且解析的实例
2014/09/20 Python
Python正则表达式分组概念与用法详解
2017/06/24 Python
一文带你了解Python中的字符串是什么
2018/11/20 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
python利用7z批量解压rar的实现
2019/08/07 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
python 利用jieba.analyse进行 关键词提取
2020/12/17 Python
花卉与景观设计系大学生求职信
2013/10/01 职场文书
信息管理应届生求职信
2014/03/07 职场文书
读书月活动方案
2014/05/22 职场文书
乡镇爱国卫生月活动总结
2014/06/25 职场文书
小学生春游活动方案
2014/08/20 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
Python中的套接字编程是什么?
2021/06/21 Python
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL
SQL Server中使用表变量和临时表
2022/05/20 SQL Server