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 相关文章推荐
一个简单的域名注册情况查询程序
Oct 09 PHP
PHP分页显示制作详细讲解
Dec 05 PHP
PHP 上传文件的方法(类)
Jul 30 PHP
mcrypt启用 加密以及解密过程详细解析
Aug 07 PHP
php操作csv文件代码实例汇总
Sep 22 PHP
PHP中变量引用与变量销毁机制分析
Nov 15 PHP
ThinkPHP3.2.3数据库设置新特性
Mar 05 PHP
Laravel 5.3 学习笔记之 安装
Aug 28 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
PHP 布尔值的自增与自减的实现方法
May 03 PHP
浅谈Laravel中的三种中间件的作用
Oct 13 PHP
PHP cookie与session会话基本用法实例分析
Nov 18 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
杏林同学录(五)
2006/10/09 PHP
php学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
2013/05/10 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能
2009/11/24 Javascript
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
2015/12/13 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
2016/05/09 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
python重试装饰器示例
2014/02/11 Python
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
Python实现购物程序思路及代码
2017/07/24 Python
python 日志增量抓取实现方法
2018/04/28 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
python3.5绘制随机漫步图
2018/08/27 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
2019/02/22 Python
python格式化输出保留2位小数的实现方法
2019/07/02 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
基于Python实现天天酷跑功能
2021/01/06 Python
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
Sam’s Club山姆会员商店:沃尔玛旗下高端会员制商店
2017/01/16 全球购物
高中生期末评语
2014/01/28 职场文书
安全生产责任书
2014/03/12 职场文书
教师节演讲稿
2014/05/06 职场文书
幼儿园家长安全责任书
2014/07/22 职场文书
2014年采购员工作总结
2014/11/18 职场文书
庭外和解协议书
2016/03/23 职场文书