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 相关文章推荐
十天学会php之第八天
Oct 09 PHP
计数器详细设计
Oct 09 PHP
杏林同学录(六)
Oct 09 PHP
Smarty安装配置方法
Apr 10 PHP
php实现memcache缓存示例讲解
Dec 04 PHP
一个PHP针对数字的加密解密类
Mar 20 PHP
PHP函数实现分页含文本分页和数字分页
Oct 23 PHP
PHP实现的增强性mhash函数
May 27 PHP
php猜单词游戏
Sep 29 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
May 04 PHP
laravel 关联关系遍历数组的例子
Oct 10 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
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
2010/03/27 PHP
献给php初学者(入门学习经验谈)
2010/10/12 PHP
9个PHP开发常用功能函数小结
2011/07/15 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
2019/05/09 PHP
php中的依赖注入实例详解
2019/08/14 PHP
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
基于jquery的无刷新分页技术
2011/06/11 Javascript
jQuery.extend 函数详解
2012/02/03 Javascript
JS 实现点击a标签的时候让其背景更换
2013/10/15 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
AngularJS 单元测试(一)详解
2016/09/21 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
2017/03/06 Javascript
详解如何配置vue-cli3.0的vue.config.js
2018/08/23 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
2018/08/25 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
2019/10/31 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
[01:52]2020年DOTA2 TI10夏季活动预告片
2020/07/15 DOTA
对numpy中的where方法嵌套使用详解
2018/10/31 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
python实现文件的备份流程详解
2019/06/18 Python
Python实现12306火车票抢票系统
2019/07/04 Python
Python如何筛选序列中的元素的方法实现
2019/07/15 Python
汽车运用工程毕业生自荐信
2013/10/29 职场文书
办公室岗位职责
2014/02/12 职场文书
谢师宴邀请函
2015/02/02 职场文书