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 相关文章推荐
Zend公司全球首推PHP认证
Oct 09 PHP
PHP制作图型计数器的例子
Oct 09 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
Oct 11 PHP
url decode problem 解决方法
Dec 26 PHP
php explode函数实例代码
Feb 27 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
Mar 20 PHP
基于PHP服务端图片生成缩略图的方法详解
Jun 20 PHP
php给图片加文字水印
Jul 31 PHP
深入解析WordPress中加载模板的get_template_part函数
Jan 11 PHP
php 处理png图片白色背景色改为透明色的实例代码
Dec 10 PHP
PHP面向对象程序设计重载(overloading)操作详解
Jun 13 PHP
php swoft框架实例用法
Dec 22 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下过滤HTML代码的函数
2007/12/10 PHP
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
php懒人函数 自动添加数据
2011/06/28 PHP
详解PHP中的PDO类
2015/07/06 PHP
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
详解javascript void(0)
2020/07/13 Javascript
python strip()函数 介绍
2013/05/24 Python
用Python的Tornado框架结合memcached页面改善博客性能
2015/04/24 Python
简单讲解Python中的字符串与字符串的输入输出
2016/03/13 Python
Python读取properties配置文件操作示例
2018/03/29 Python
分析python请求数据
2018/08/19 Python
Python数组并集交集补集代码实例
2020/02/18 Python
Python如何存储数据到json文件
2020/03/09 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
2020/09/11 Python
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
工程业务员工作职责
2013/12/07 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
十佳党员事迹材料
2014/08/28 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书