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 相关文章推荐
实现树状结构的两种方法
Oct 09 PHP
我的论坛源代码(一)
Oct 09 PHP
WindowsXP中快速配置Apache+PHP5+Mysql
Jun 05 PHP
PHP下使用CURL方式POST数据至API接口的代码
Feb 14 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
Jun 18 PHP
linux下安装php的memcached客户端
Aug 03 PHP
PHP原生函数一定好吗?
Dec 08 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
Jan 13 PHP
php超快高效率统计大文件行数
Jul 05 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
php实现的rc4加密解密类定义与用法示例
Aug 16 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
Apr 04 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 sprintf()函数让你的sql操作更安全
2008/07/23 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
PHP CURL 内存泄露问题解决方法
2015/02/12 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
2018/05/23 PHP
不安全的常用的js写法
2009/09/15 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
JS三级可折叠菜单实现方法
2016/02/29 Javascript
JS html时钟制作代码分享
2017/03/03 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
2019/04/16 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
js实现计时器秒表功能
2019/12/16 Javascript
Python中unittest模块做UT(单元测试)使用实例
2015/06/12 Python
python顺序执行多个py文件的方法
2019/06/29 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
Python实现元素等待代码实例
2019/11/11 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
人力资源管理专业应届生求职信
2013/09/28 职场文书
餐厅经理岗位职责和岗位目标
2014/02/13 职场文书
优秀德育工作者事迹材料
2014/05/07 职场文书
董事长助理工作职责
2014/06/08 职场文书
小学生志愿者活动方案
2014/08/23 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
MySql新手入门的基本操作汇总
2021/05/13 MySQL
修改并编译golang源码的操作步骤
2021/07/25 Golang
Python实现Hash算法
2022/03/18 Python