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 相关文章推荐
mysql中存储过程、函数的一些问题
Feb 14 PHP
在同一窗体中使用PHP来处理多个提交任务
May 08 PHP
php mysql数据库操作类
Jun 04 PHP
PHP 写文本日志实现代码
May 18 PHP
php报表之jpgraph柱状图实例代码
Aug 22 PHP
php cc攻击代码与防范方法
Oct 18 PHP
PHP中使用sleep函数实现定时任务实例分享
Aug 21 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
Oct 26 PHP
php生成4位数字验证码的实现代码
Nov 23 PHP
php实现等比例不失真缩放上传图片的方法
Nov 14 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
Jul 04 PHP
php数组和链表的区别总结
Sep 20 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
《忧国的莫里亚蒂》先导宣传图与STAFF公开
2020/03/04 日漫
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
2014/08/23 PHP
在win7中搭建Linux+PHP 开发环境
2014/10/08 PHP
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
通过javascript的匿名函数来分析几段简单有趣的代码
2010/06/29 Javascript
基于jquery的button默认enter事件(回车事件)。
2011/05/18 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
js 判断图片是否加载完以及实现图片的预下载
2014/08/14 Javascript
详解nodejs与javascript中的aes加密
2016/05/22 NodeJs
javascript实现任务栏消息提示的简单实例
2016/05/31 Javascript
react-router 路由切换动画的实现示例
2018/12/03 Javascript
JS实现吸顶特效
2020/01/08 Javascript
Python中的__SLOTS__属性使用示例
2015/02/18 Python
Python使用django搭建web开发环境
2017/06/09 Python
使用python实现链表操作
2018/01/26 Python
PyCharm设置护眼背景色的方法
2018/10/29 Python
利用Python实现原创工具的Logo与Help
2018/12/03 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
详解python中的数据类型和控制流
2019/08/08 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
python标识符命名规范原理解析
2020/01/10 Python
基于梯度爆炸的解决方法:clip gradient
2020/02/04 Python
Python 中如何使用 virtualenv 管理虚拟环境
2021/01/21 Python
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
Html5实现文件异步上传功能
2017/05/19 HTML / CSS
Belstaff英国官方在线商店:Belstaff.co.uk
2021/02/09 全球购物
超市促销活动方案
2014/03/05 职场文书
售房委托书
2014/08/30 职场文书
2014年纪检工作总结
2014/11/12 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书
goland 恢复已更改文件的操作
2021/04/28 Golang
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
2022/04/29 Servers