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 相关文章推荐
用PHP和ACCESS写聊天室(一)
Oct 09 PHP
PHP memcache扩展的三种安装方法
Apr 26 PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
May 04 PHP
php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
Jul 31 PHP
解析mysql 表中的碎片产生原因以及清理
Jun 22 PHP
php中AES加密解密的例子小结
Feb 18 PHP
PHP学习笔记之字符串编码的转换和判断
May 22 PHP
php实现的短网址算法分享
Jun 20 PHP
关于php中一些字符串总结
May 05 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 PHP
php 后端实现JWT认证方法示例
Sep 04 PHP
PHP dirname简单使用代码实例
Nov 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
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
2015/03/25 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
javascript网页关键字高亮代码
2008/07/30 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
不要使用jQuery触发原生事件的方法
2014/03/03 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
Bootstrap的modal拖动效果
2016/12/25 Javascript
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
vant中的toast层级改变操作
2020/11/04 Javascript
element 动态合并表格的步骤
2020/12/31 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
2017/06/02 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
适合各种场合的美食礼品:Harry & David
2016/08/03 全球购物
英国高端食品和葡萄酒超市:Waitrose
2016/08/23 全球购物
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
英国现代市场:ARKET
2019/04/10 全球购物
庆祝儿童节标语
2014/10/09 职场文书
三方股份合作协议书
2014/10/13 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
Matplotlib可视化之添加让统计图变得简单易懂的注释
2021/06/11 Python