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 相关文章推荐
打造计数器DIY三步曲(上)
Oct 09 PHP
基于mysql的bbs设计(三)
Oct 09 PHP
文件系统基本操作类
Nov 23 PHP
php开发工具之vs2005图解
Jan 12 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
May 18 PHP
ThinkPHP中U方法的使用浅析
Jun 13 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
Oct 15 PHP
typecho插件编写教程(六):调用接口
May 28 PHP
php获取英文姓名首字母的方法
Jul 13 PHP
PHP实现linux命令tail -f
Feb 22 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
Mar 11 PHP
PHP后门隐藏的一些技巧总结
Nov 04 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
PHP 用数组降低程序的时间复杂度
2009/12/04 PHP
二招解决php乱码问题
2012/03/25 PHP
php把session写入数据库示例
2014/02/26 PHP
一波PHP中cURL库的常见用法代码示例
2016/05/06 PHP
event对象的方法 兼容多浏览器
2009/06/27 Javascript
js判断字符长度及中英文数字等
2014/03/19 Javascript
JavaScript实现查找字符串中第一个不重复的字符
2014/12/29 Javascript
JS 对象属性相关(检查属性、枚举属性等)
2015/04/05 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
JS路由跳转的简单实现代码
2017/09/21 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
bootstrap-Treeview实现级联勾选
2017/11/23 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
Ruby元编程基础学习笔记整理
2016/07/02 Python
python中的字典操作及字典函数
2018/01/03 Python
对Python中type打开文件的方式介绍
2018/04/28 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
2018/07/18 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
新手学python应该下哪个版本
2020/06/11 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
生产班组长岗位职责
2014/01/05 职场文书
《傅雷家书》教学反思
2014/04/20 职场文书
银行柜员求职自荐书
2014/06/18 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
确保工程质量承诺书
2015/04/29 职场文书
初中团委工作总结
2015/08/13 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
《植树问题》教学反思
2016/03/03 职场文书
Redis安装启动及常见数据类型
2021/04/14 Redis
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS
Python趣味挑战之教你用pygame画进度条
2021/05/31 Python
JavaScript实现简单计时器
2021/06/22 Javascript
asyncio异步编程之Task对象详解
2022/03/13 Python