Thinkphp框架+Layui实现图片/文件上传功能分析


Posted in PHP onFebruary 07, 2020

本文实例讲述了Thinkphp框架+Layui实现图片/文件上传功能。分享给大家供大家参考,具体如下:

在项目中用到了,再网上找了现成的代码都是借口异常或者非法上传,所以在一番摸索搞定之后拿来和大家分享。

html:

<form class="layui-form layui-form-pane" action="" style="margin-top:20px;" enctype="multipart/form-data">
  <center>
    <div class="layui-upload-drag" id="uploadBanner">
      <img class="layui-upload-img" id="upload-photo">
      <i class="layui-icon" id="upload-icon">?</i>
      <p>点击上传,或将文件拖拽到此处</p>
      <p>建议尺寸1920*512</p>
    </div>
    <input type="hidden" id="res" name="banner_photo" value="" lay-verify="required" />
    <div class="layui-form-item" style="margin-top:10px;">
      <button class="layui-btn" lay-submit="" lay-filter="sub">提交</button>
    </div>
    <div id="demoText"></div>
  </center>
</form>

JS:

layui.use('upload', function(){
  var $ = layui.jquery
    ,upload = layui.upload;
  //普通图片上传
  var uploadInst = upload.render({
    elem: '#uploadBanner'
    ,url: "{:U('Api/doUploadPic')}"
    ,before: function(obj){
      //预读本地文件示例,不支持ie8
      obj.preview(function(index, file, result){
        $('#upload-photo').attr('src', result); //图片链接(base64)
        $('#upload-photo').attr('style', 'height:10rem;');
        $('#upload-icon').attr('style','display:none;');
      });
    }
    ,done: function(res, index, upload){
      //如果上传失败
      if(res.code > 0){
        return layer.msg('上传失败');
      }
      //上传成功
      console.log("成功啦!" + obj2string(res) + "  " + index + "  " + upload);
    }
    ,error: function(){
      //演示失败状态,并实现重传
      var demoText = $('#demoText');
      demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
      demoText.find('.demo-reload').on('click', function(){
        uploadInst.upload();
      });
    }
  });
});

PHP接口:

public function doUploadPic()//上传模块
  {
    $upload = new \Think\Upload();
    $upload->maxSize = 3145728;
    $upload->exts = array('jpg', 'gif', 'png', 'jpeg');
    $upload->rootPath = './Public/'; // 设置附件上传根目录
    $upload->savePath = 'upload/'; // 设置附件上传子目录
    $info = $upload->upload();
    if(!$info){
      $this->error($upload->getError());
    }else{
      foreach($info as $file){
      $data = '/Public'.$file['savepath'] . $file['savename'];
      $file_a=$data;
      echo '{"code":0,"msg":"成功上传","data":{"src":"'.$file_a.'"}}';
      }
    }
  }

图片就上传到/Public/upload文件夹下了:

Thinkphp框架+Layui实现图片/文件上传功能分析

Thinkphp框架+Layui实现图片/文件上传功能分析

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP排序算法的复习和总结
Feb 15 PHP
分享下页面关键字抓取components.arrow.com站点代码
Jan 30 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
php结合正则批量抓取网页中邮箱地址
May 19 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
Aug 12 PHP
PHP实现的登录,注册及密码修改功能分析
Nov 25 PHP
php 调用ffmpeg获取视频信息的简单实现
Apr 03 PHP
laravel 5.3中自定义加密服务的方案详解
May 09 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
Jul 10 PHP
PHP bin2hex()函数基础实例讲解
Feb 11 PHP
yii框架数据库关联查询操作示例
Oct 14 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
Oct 16 PHP
PHP查找一列有序数组是否包含某值的方法
Feb 07 #PHP
php测试kafka项目示例
Feb 06 #PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
Feb 06 #PHP
PHP实现常用排序算法的方法
Feb 05 #PHP
PHP ElasticSearch做搜索实例讲解
Feb 05 #PHP
PHP实现新型冠状病毒疫情实时图的实例
Feb 04 #PHP
php post换行的方法
Feb 03 #PHP
You might like
星际RPG字典
2020/03/04 星际争霸
用Socket发送电子邮件
2006/10/09 PHP
php mssql 数据库分页SQL语句
2008/12/16 PHP
php二维数组转成字符串示例
2014/02/17 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
php简单压缩css样式示例
2016/09/22 PHP
php生成二维码图片方法汇总
2016/12/17 PHP
jQuery中读取json文件示例代码
2013/05/10 Javascript
前台js调用后台方法示例
2013/12/02 Javascript
JavaScript基于ajax编辑信息用法实例
2015/07/15 Javascript
js操作table元素实现表格行列新增、删除技巧总结
2015/11/18 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
微信小程序自定义yPicker组件实现省市区三级联动功能
2020/10/29 Javascript
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
python pandas模块基础学习详解
2019/07/03 Python
通过 Django Pagination 实现简单分页功能
2019/11/11 Python
pycharm修改file type方式
2019/11/19 Python
python add_argument()用法解析
2020/01/29 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
世界上最大的糖果店:Dylan’s Candy Bar
2017/11/07 全球购物
我们是伦敦女孩:WalG
2018/01/08 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
计算机大学生的自我评价
2013/10/15 职场文书
中职应届生会计求职信
2013/10/23 职场文书
应届生的求职推荐信范文
2013/11/30 职场文书
大一自我鉴定范文
2013/12/27 职场文书
卫生院艾滋病宣传活动小结
2014/07/09 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang
golang 在windows中设置环境变量的操作
2021/04/29 Golang
MySql学习笔记之事务隔离级别详解
2021/05/12 MySQL
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis