thinkPHP利用ajax异步上传图片并显示、删除的示例


Posted in PHP onSeptember 26, 2018

近来学习tp5的过程中,项目中有个发帖功能,选择主题图片。如下:

thinkPHP利用ajax异步上传图片并显示、删除的示例

利用原始的文件上传处理,虽然通过原始js语句能实时显示上传图片,但是这样的话会涉及很多兼容问题。使用ajax技术,实现选择性删除所选图片功能,并不会有兼容问题。

表单文件form:

<form method="post" enctype="multipart/form-data">
<div style="margin: 20px 20px 20px 10px;">
  主题图片:
  <span id="img-list-box" style="margin-left: 25px;"></span>
  <span style="display:inline-block;height: 30px;position: relative;top:0px;left:0px;">
    <a style="display: inline-block;width: 100px;height:30px;line-height: 30px;text-align:center;background: #F60;color: #FFF;">图片上传</a>
    <input type="file" name="img_src" style="width: 100px;border: 1px solid red;position: absolute;top:0px;left: 0px;height: 30px;opacity: 0;" id="up-img-file" onchange="upimg(this)">
   </span>
</div>
</form>

需要发送Ajax请求的话,当然表单是不能实现我们的需求的,因此,我们需要给表单关联一个单击事件去帮我们进行Ajax请求并选择图片。

当我们点击上传图片这个button按钮时触发选择图片实现Ajax上传

JavaScript代码:

<script type="text/javascript" src="__STATIC__/home/js/jquery.min.js"></script>
<script type="text/javascript">
  function upimg(obj)
  {
    if( obj.value == "" ) {
      return;
    }
    var formdata = new FormData();
    //<input type="file" name="img" value="" />
    formdata.append("img" , $(obj)[0].files[0]);//获取文件法二
    $.ajax({
      type : 'post',
      url : '/home/note/upimg', //接口
      data : formdata,
      cache : false,
      processData : false, // 不处理发送的数据,因为data值是Formdata对象,不需要对数据做处理
      contentType : false, // 不设置Content-type请求头
      success : function(response){
        console.log(response);
        var html = '<div style="position: relative;margin-right: 20px;margin-bottom: 15px;width: 132px;display: inline-block;border: 1px solid #CCC;background:#EEE;">'
            +'<span style="display: block;width: 120px;height: 80px;border: 1px solid #F2F1F0;margin: 5px;overflow: hidden;">'
            +'<img src="'+response+'" style="width: 100%;" />'
            +'</span>'
            +'<input type="hidden" name="imgs[]" value="'+response+'" />'
            +'<a onclick="delImg(this);" style="z-index: 10;display: block;top: -8px;cursor:pointer;right: -8px;position:absolute;width: 20px;height: 20px;background: #CCC;border-radius:100%;text-align:center;line-height: 20px;border: 1px solid #C1C1C1;color: #555;">X</a>'
            +'</div>';

        $('#img-list-box').append(html);
      },
      error : function(){ }
    });
  }

  function delImg(obj)
  {
    $(obj).parent('div').remove();
  }
</script>

点击选择图片之后就是交给服务器端处理了。

php接口文件:

public function upimg()
  {
    //验证
    $file = request()->file('img');
    // 移动到框架应用根目录/public/uploads/ 目录下
    if($file){
      $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');
      if($info){
        // 成功上传后 获取上传信息
        $img_src = '/uploads/'.$info->getSaveName();
        echo $img_src; //返回ajax请求
      }else{
        // 上传失败获取错误信息
        $this->error($file->getError());
      }
    }
  }

改善后的效果图:

thinkPHP利用ajax异步上传图片并显示、删除的示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
深入解析phpCB批量转换的代码示例
Jun 27 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 PHP
微信公众平台天气预报功能开发
Jul 06 PHP
php判断当前用户已在别处登录的方法
Jan 06 PHP
php版微信公众平台入门教程之开发者认证的方法
Sep 26 PHP
PHP读取大文件的几种方法介绍
Oct 27 PHP
10个值得深思的PHP面试题
Nov 14 PHP
PHP第三方登录―QQ登录实现方法
Feb 06 PHP
使用vs code编辑调试php配置的方法
Jan 29 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
Mar 12 PHP
PHP实现支持CURL字符串证书传输的方法
Mar 23 PHP
php 中的信号处理操作实例详解
Mar 04 PHP
多个Laravel项目如何共用migrations详解
Sep 25 #PHP
php中上传文件的的解决方案
Sep 25 #PHP
PHP调用微博接口实现微博登录的方法示例
Sep 22 #PHP
PHP如何搭建百度Ueditor富文本编辑器
Sep 21 #PHP
详解php协程知识点
Sep 21 #PHP
在php的yii2框架中整合hbase库的方法
Sep 20 #PHP
php实现在线考试系统【附源码】
Sep 18 #PHP
You might like
php字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
2013/06/20 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
PHP简单创建压缩图的方法
2016/08/24 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
php魔术方法功能与用法实例分析
2016/10/19 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
2017/02/18 PHP
php微信公众号开发之快递查询
2018/10/20 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
Mootools 1.2教程 滑动效果(Slide)
2009/09/15 Javascript
js DOM 元素ID就是全局变量
2012/09/20 Javascript
jquery中的事件处理详细介绍
2013/06/24 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
2015/09/17 Javascript
JQuery为元素添加样式的实现方法
2016/07/20 Javascript
jquery——九宫格大转盘抽奖实例
2017/01/16 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
python搭建微信公众平台
2016/02/09 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
2020/02/13 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
甜品蛋糕店创业计划书范文
2014/02/06 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
大学生党员自我剖析材料
2014/10/06 职场文书
缓刑人员思想汇报
2014/10/11 职场文书
山东省召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
汽车转让协议书
2015/01/29 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
Python使用openpyxl批量处理数据
2021/06/23 Python
python turtle绘图命令及案例
2021/11/23 Python