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+MYSQL的文章管理系统(二)
Oct 09 PHP
JS与PHP向函数传递可变参数的区别实例代码
May 18 PHP
在PHP中设置、使用、删除Cookie的解决方法
May 06 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
Mar 02 PHP
php使用curl简单抓取远程url的方法
Mar 13 PHP
如何使用Gitblog和Markdown建自己的博客
Jul 31 PHP
变量在 PHP7 内部的实现(一)
Dec 21 PHP
thinkPHP5.0框架环境变量配置方法
Mar 17 PHP
PHP实现文件下载【实例分享】
Apr 28 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 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
php上的memcache和memcached两个pecl库
2010/03/29 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
javascript Keycode对照表
2009/10/24 Javascript
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
JQuery.validate在ie8下不支持的快速解决方法
2016/05/18 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
JS定时器用法分析【时钟与菜单中的应用】
2016/12/21 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
vue自定义指令的创建和使用方法实例分析
2018/12/04 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
深入学习python的yield和generator
2016/03/10 Python
详解Python核心对象类型字符串
2018/02/11 Python
详解Python基础random模块随机数的生成
2019/03/23 Python
python实现kmp算法的实例代码
2019/04/03 Python
Python中asyncio模块的深入讲解
2019/06/10 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
Python 3 使用Pillow生成漂亮的分形树图片
2019/12/24 Python
解决Tensorflow占用GPU显存问题
2020/02/03 Python
同程旅游英文网站:LY.com
2018/11/13 全球购物
英国著名书店:Foyles
2018/12/01 全球购物
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
servlet面试题
2012/08/20 面试题
应届生保险求职信
2013/11/11 职场文书
写给妈妈的道歉信
2014/01/11 职场文书
灵山大佛导游词
2015/02/04 职场文书
2016学习雷锋精神活动倡议书
2015/04/27 职场文书
复兴之路纪录片观后感
2015/06/02 职场文书
西游记读书笔记
2015/06/25 职场文书