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 相关文章推荐
写一个用户在线显示的程序
Oct 09 PHP
xajax写的留言本
Nov 25 PHP
个人站长制做网页常用的php代码
Mar 03 PHP
phpMyAdmin 安装教程全攻略
Mar 19 PHP
php flv视频时间获取函数
Jun 29 PHP
php生成xml时添加CDATA标签的方法
Oct 17 PHP
php合并数组中相同元素的方法
Nov 13 PHP
PHP5.2下preg_replace函数的问题
May 08 PHP
深入理解PHP 数组之count 函数
Jun 13 PHP
php die()与exit()的区别实例详解
Dec 03 PHP
PHPMailer发送邮件
Dec 28 PHP
PHP实现打包下载文件的方法示例
Oct 07 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 DataGrid 实现代码
2009/08/12 PHP
PHP CURL模拟GET及POST函数代码
2010/04/25 PHP
PHP中读写文件实现代码
2011/10/20 PHP
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
php实现读取和写入tab分割的文件
2015/06/01 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
discuz论坛更换域名,详细文件修改步骤
2020/12/09 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
2009/11/09 Javascript
IE6/7/8中Option元素未设value时Select将获取空字符串
2011/04/07 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
[原创]微信小程序获取网络类型的方法示例
2019/03/01 Javascript
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
2020/01/22 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
Python实现抓取网页并且解析的实例
2014/09/20 Python
django 自定义用户user模型的三种方法
2014/11/18 Python
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
python计算auc指标实例
2017/07/13 Python
PyTorch中常用的激活函数的方法示例
2019/08/20 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
通过Python实现一个简单的html页面
2020/05/16 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
几个Linux面试题笔试题
2016/08/01 面试题
本科毕业生求职信
2014/06/15 职场文书
爱的承诺书
2015/01/20 职场文书
Go中使用gjson来操作JSON数据的实现
2022/08/14 Golang