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 相关文章推荐
用Apache反向代理设置对外的WWW和文件服务器
Oct 09 PHP
用PHP4访问Oracle815
Oct 09 PHP
PHP入门
Oct 09 PHP
php 过滤危险html代码
Jun 29 PHP
php面向对象全攻略 (十六) 对象的串行化
Sep 30 PHP
smarty中先strip_tags过滤html标签后truncate截取文章运用
Oct 25 PHP
php5.3 goto函数介绍和示例
Mar 21 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
Apr 29 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
Feb 03 PHP
Yii Framework框架使用PHPExcel组件的方法示例
Jul 24 PHP
Yii框架的redis命令使用方法简单示例
Oct 15 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 empty()与isset()区别的详细介绍
2013/06/17 PHP
JavaScript基本概念初级讲解论坛贴的学习记录
2009/02/22 Javascript
javascript void(0)的妙用
2009/10/21 Javascript
快速排序 php与javascript的不同之处
2011/02/22 Javascript
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
2012/03/01 Javascript
可兼容IE的获取及设置cookie的jquery.cookie函数方法
2013/09/02 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
node.js中的fs.utimes方法使用说明
2014/12/15 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
深入理解AngularJS中的ng-bind-html指令
2017/03/27 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
jQuery鼠标悬停内容动画切换效果
2017/04/27 jQuery
layui table 表格模板按钮的实例代码
2019/09/21 Javascript
Nodejs实现图片上传、压缩预览、定时删除功能
2019/10/25 NodeJs
Windows系统下PhantomJS的安装和基本用法
2018/10/21 Python
python实现Flappy Bird源码
2018/12/24 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
2020/04/27 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
CSS3 mask 遮罩的具体使用方法
2017/11/03 HTML / CSS
JDO的含义
2012/11/17 面试题
2014年会演讲稿范文
2014/01/06 职场文书
企业总经理职责
2014/02/02 职场文书
技能比赛获奖感言
2014/02/14 职场文书
员工安全责任书范本
2014/07/24 职场文书
四风个人对照检查材料思想汇报(办公室通用版)
2014/10/07 职场文书
小学优秀学生评语
2014/12/29 职场文书
水电工程师岗位职责
2015/02/13 职场文书
2015年检验科工作总结
2015/04/27 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android