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 相关文章推荐
php与XML、XSLT、Mysql的结合运用实现代码
Nov 19 PHP
php 字符串压缩方法比较示例
Jan 23 PHP
destoon整合UCenter图文教程
Jun 21 PHP
PHP函数in_array()使用详解
Aug 20 PHP
php读取远程gzip压缩网页的方法
Dec 29 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
Apr 20 PHP
PHP程序员不应该忽略的3点
Oct 09 PHP
PHP实现批量检测网站是否能够正常打开的方法
Aug 23 PHP
php实现的SSO单点登录系统接入功能示例分析
Oct 12 PHP
PHP实现获取url地址中顶级域名的方法示例
Jun 05 PHP
php抽象方法和普通方法的区别点总结
Oct 13 PHP
HTTP头隐藏PHP版本号实现过程解析
Dec 09 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 #PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 #PHP
php检查函数必传参数是否存在的实例详解
Aug 28 #PHP
浅谈Laravel队列实现原理解决问题记录
Aug 19 #PHP
yii2 commands模式以及配置crontab定时任务的方法
Aug 19 #PHP
利用 fsockopen() 函数开放端口扫描器的实例
Aug 19 #PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 #PHP
You might like
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
解析yahoo邮件用phpmailer发送的实例
2013/06/24 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
javascript中关于break,continue的特殊用法与介绍
2012/05/24 Javascript
form表单只提交数据而不进行页面跳转的解决方案
2013/09/18 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
上传图片js判断图片尺寸和格式兼容IE
2014/09/01 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
2016/05/30 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
vue el-tree 默认展开第一个节点的实现代码
2020/05/15 Javascript
vue-openlayers实现地图坐标弹框效果
2020/09/24 Javascript
vue下载二进制流图片操作
2020/10/26 Javascript
vue中如何自定义右键菜单详解
2020/12/08 Vue.js
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
Python下的twisted框架入门指引
2015/04/15 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
用于业余项目的8个优秀Python库
2018/09/21 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
2019/08/12 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
成功的酒店创业计划书
2013/12/27 职场文书
战友聚会主持词
2014/04/02 职场文书
C++程序员求职信范文
2014/04/14 职场文书
软件项目开发计划书
2014/05/01 职场文书
竞选班干部演讲稿300字
2014/08/20 职场文书
机关作风建设自查报告
2014/10/22 职场文书
创业计划书之美容店
2019/09/16 职场文书
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL