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 多维数组排序(usort,uasort)
Jun 30 PHP
深入理解require与require_once与include以及include_once的区别
Jun 05 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
PHP函数microtime()用法与说明
Dec 04 PHP
php检测用户是否用手机(Mobile)访问网站的类
Jan 09 PHP
ThinkPHP中redirect用法分析
Dec 05 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
Dec 09 PHP
PHP编程计算文件或数组中单词出现频率的方法
May 22 PHP
PHP判断是否是微信打开还是浏览器打开的方法
Feb 27 PHP
Yaf框架封装的MySQL数据库操作示例
Mar 06 PHP
Laravel定时任务的每秒执行代码
Oct 22 PHP
PHP cookie与session会话基本用法实例分析
Nov 18 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中strtotime函数使用方法详解
2011/11/27 PHP
PHP学习笔记 IIS7下安装配置php环境
2012/10/29 PHP
php基础教程
2015/08/26 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
jquery中this的使用说明
2010/09/06 Javascript
Firefox中autocomplete=&quot;off&quot; 设置不起作用Bug的解决方法
2011/03/25 Javascript
jQuery中Dom的基本操作小结
2014/01/23 Javascript
使用jQueryMobile实现滑动翻页效果的方法
2015/02/04 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
jQuery实现简单滚动动画效果
2016/04/07 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
2018/10/10 Javascript
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
Python进行特征提取的示例代码
2020/10/15 Python
css3实现超炫风车特效
2014/11/12 HTML / CSS
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
塑料制成的可水洗的编织平底鞋和鞋子:Rothy’s
2018/09/16 全球购物
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
Helly Hansen工作服美国官方网上商店:为最恶劣的环境
2019/09/04 全球购物
新奥尔良珠宝:Mignon Faget
2020/11/23 全球购物
正规的求职信范文分享
2013/12/11 职场文书
农民致富事迹材料
2014/01/23 职场文书
消防安全责任书
2014/04/14 职场文书
文言文辞职信
2015/02/28 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
Python爬虫 简单介绍一下Xpath及使用
2022/04/26 Python
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers