thinkphp ajaxfileupload实现异步上传图片的示例


Posted in PHP onAugust 28, 2017

thinkphp开发图片上传,图片异步上传是目前比较方便的功能,这里我就不写css文件了,将代码写出来。引入核心文件下载https://github.com/carlcarl/A...

HTML

下面首先在html页面引入相关js资源

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>图片上传</title> 
<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="js/ajaxfileupload.js"></script> 
</head>
<body>
</body>
</html>

接下来在body中创建相关div

<label class="title w100">封面图片:</label>
<div class="f_l">
 <label class="fileupload" onclick="upd_file(this,'image_file');">
  <input type="file" class="filebox" name="image_file" id="image_file"/>
  <!--上传成功后图片会给value赋值图片路径,以便于form表单提交数据-->
  <input type="hidden" name="image" value="">      
 </label>
 <label class="fileuploading hide" ></label>     
</div>
<div class="blank15"></div>
<!--上传成功后图片会在这里显示否则是默认图片-->
<img id="image" src="/Public/images/empty_thumb.gif" />

解释一下:

其中upd_file(this,'image_file')不可缺少

其中隐藏的input 是用于上传成功后赋值图片路径,以便于form表单提交数据

接下来在html中编辑javascript脚本以便于传递和提交图片功能

<script>
function upd_file(obj,file_id){ 
$("input[name='"+file_id+"']").bind("change",function(){   
 $(obj).hide();
 $(obj).parent().find(".fileuploading").removeClass("hide");
 $(obj).parent().find(".fileuploading").removeClass("show");
 $(obj).parent().find(".fileuploading").addClass("show");
  $.ajaxFileUpload
  (
   {
    url:'/index.php/home/avatar/app_upload_image',//上传图片处理文件
    secureuri:false,
    fileElementId:file_id,
    dataType: 'json',
    success: function (data, status)
    {
      $(obj).show();
      $(obj).parent().find(".fileuploading").removeClass("hide");
     $(obj).parent().find(".fileuploading").removeClass("show");
     $(obj).parent().find(".fileuploading").addClass("hide");
      if(data.status==1)
      {
       $("#image").attr("src",data.thumb_url+"?r="+Math.random());        
       $("input[name='image']").val(data.url);//返回json后将隐藏input赋值
      //$("#img_url").html('<input type="hidden" name="img_url" value="'+ path.path +'" />');
      }
      else
      {
       $.showErr(data.msg);
      }
    },
    error: function (data, status, e)
    {
     $.showErr(data.responseText);;
     $(obj).show();
     $(obj).parent().find(".fileuploading").removeClass("hide");
     $(obj).parent().find(".fileuploading").removeClass("show");
     $(obj).parent().find(".fileuploading").addClass("hide");
    }
   }
  );
  $("input[name='"+file_id+"']").unbind("change");
}); 
}
<script>

thikphp 中创建方法 app_upload_image()

function app_upload_image($maxSize=52428800){
  $id=session('id');
  $config=array(
   'rootPath' =>'Upload',   //文件上传保存的根路径
   'savePath' =>'/avatar/', 
   'exts'  => array('jpg', 'gif', 'png', 'jpeg','bmp'),
   'maxSize' => $maxSize,
   'autoSub' => true,
   );
  $upload = new \Think\Upload($config);// 实例化上传类
  $z = $upload->uploadOne($_FILES['image_file']);
  if($z) {
  //拼接图片的路径名
    $img='/Upload'.$z['savepath'].$z['savename'];
    $_POST['image_file']=$img;
    //获取上传图片绝对路径
    $imgsrc=$_SERVER['DOCUMENT_ROOT'].__ROOT__.$_POST['image_file'];
    $image = new \Think\Image(); 
    $image->open($imgsrc);
    //将图片裁剪为400x400并保存为corp.jpg
    $image->thumb(205, 160,\Think\Image::IMAGE_THUMB_CENTER)->save($imgsrc);

   $this->ajaxReturn(array("thumb_url"=>$img,"url"=>$img,"status"=>1));
  }
 }

OK这样就好了,首先和大家说一下,如果ajaxfileupload.js报错程序是不会跑通的,如果你的程序报错就检查你的ajaxfileupload文件是不是版本的问题

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

PHP 相关文章推荐
非常好用的Zend Framework分页类
Jun 25 PHP
简单分析ucenter 会员同步登录通信原理
Aug 25 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
Nov 24 PHP
PHP动态生成指定大小随机图片的方法
Mar 25 PHP
深入理解PHP 数组之count 函数
Jun 13 PHP
微信红包随机生成算法php版
Jul 21 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
PHP根据key删除数组中指定的元素
Feb 28 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 PHP
PHP生成zip压缩包的常用方法示例
Aug 22 PHP
浅谈laravel aliases别名的原理
Oct 24 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
Apr 26 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 #PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 #PHP
php检查函数必传参数是否存在的实例详解
Aug 28 #PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 #PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 #PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 #PHP
PHP基于递归实现的约瑟夫环算法示例
Aug 27 #PHP
You might like
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
PHP把数字转成人民币大写的函数分享
2014/06/30 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
Aster vs Newbee BO3 第三场2.18
2021/03/10 DOTA
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
jquery获取select选中值的方法分析
2015/12/22 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
实例解析Array和String方法
2016/12/14 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
微信小程序实现传参数的几种方法示例
2018/01/10 Javascript
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
2019/03/11 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
2019/05/02 Javascript
vue日历/日程提醒/html5本地缓存功能
2019/09/02 Javascript
Node.js API详解之 module模块用法实例分析
2020/05/13 Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
2020/08/05 Javascript
举例讲解Python中的算数运算符的用法
2015/05/13 Python
python 创建弹出式菜单的实现代码
2017/07/11 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
2018/02/13 Python
python 通过类中一个方法获取另一个方法变量的实例
2019/01/22 Python
对Django中内置的User模型实例详解
2019/08/16 Python
python中property属性的介绍及其应用详解
2019/08/29 Python
Django调用支付宝接口代码实例详解
2020/04/04 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
CSS3 简写animation
2012/05/10 HTML / CSS
零件设计自荐信范文
2013/11/27 职场文书
品质主管岗位职责
2014/03/16 职场文书
幼师个人总结范文
2015/02/28 职场文书
2015员工年度考核评语
2015/03/25 职场文书
付款证明模板
2015/06/19 职场文书
基于Redission的分布式锁实战
2022/08/14 Redis
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS