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 相关文章推荐
支持oicq头像的留言簿(二)
Oct 09 PHP
require(),include(),require_once()和include_once()的异同
Jan 02 PHP
php日历[测试通过]
Mar 27 PHP
php反弹shell实现代码
Apr 22 PHP
PHP chmod 函数与批量修改文件目录权限
May 10 PHP
php 按指定元素值去除数组元素的实现方法
Nov 04 PHP
PHP微框架Dispatch简介
Jun 12 PHP
php按单词截取字符串的方法
Apr 07 PHP
thinkphp框架实现删除和批量删除
Jun 29 PHP
PHP实现关键字搜索后描红功能示例
Jul 03 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
Oct 20 PHP
tp5使用layui实现多个图片上传(带附件选择)的方法实例
Nov 17 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
PHP4实际应用经验篇(4)
2006/10/09 PHP
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
javascript 面向对象编程基础 多态
2009/08/21 Javascript
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
python实现简单温度转换的方法
2015/03/13 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
2018/04/21 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
使用Django连接Mysql数据库步骤
2019/01/15 Python
深入浅析python的第三方库pandas
2020/02/13 Python
python实现FTP文件传输的方法(服务器端和客户端)
2020/03/20 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
python中编写函数并调用的知识点总结
2021/01/13 Python
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
2019/06/03 HTML / CSS
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
电气专业推荐信范文
2013/11/18 职场文书
日语求职信范文
2013/12/17 职场文书
科技工作者先进事迹
2014/08/16 职场文书
国际商务专业毕业生自我鉴定2014
2014/09/27 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
春节慰问信范文
2015/02/15 职场文书
大学推普周活动总结
2015/05/07 职场文书
导游词之西湖雷峰塔
2019/09/18 职场文书
Python操作CSV格式文件的方法大全
2021/07/15 Python
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS