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 相关文章推荐
session在PHP大型web应用中的使用
Jun 25 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
Feb 14 PHP
深入php多态的实现详解
Jun 09 PHP
如何在smarty中增加类似foreach的功能自动加载数据
Jun 26 PHP
保存到桌面、设为桌面且带图标的PHP代码
Nov 19 PHP
详解PHP中strlen和mb_strlen函数的区别
Mar 07 PHP
简单的php新闻发布系统教程
May 09 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
Apr 22 PHP
PHP统计当前在线用户数实例讲解
Oct 21 PHP
php等比例缩放图片及剪切图片代码分享
Feb 13 PHP
Yii2框架实现注册和登录教程
Sep 30 PHP
PHP反射实际应用示例
Apr 03 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
深入密码加salt原理的分析
2013/06/06 PHP
PHP排序算法类实例
2015/06/17 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
PHP中命名空间的使用例子
2019/03/22 PHP
用JavaScript隐藏控件的方法
2009/09/21 Javascript
怎么判断js脚本加载完成
2014/02/28 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
JavaScript表单验证完美代码
2017/03/02 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
vue axios请求超时的正确处理方法
2018/04/02 Javascript
不得不知的ES6小技巧
2018/07/28 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
js实现前端界面导航栏下拉列表
2020/08/27 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
python实现将元祖转换成数组的方法
2015/05/04 Python
Pycharm 实现下一个文件引用另外一个文件的方法
2019/01/17 Python
选择Python写网络爬虫的优势和理由
2019/07/07 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
C# Debug和Testing相关面试题
2015/10/25 面试题
模具设计与制造专业应届生求职信
2013/10/18 职场文书
农村婚礼证婚词
2014/01/10 职场文书
销售经理助理岗位职责
2015/04/13 职场文书
2015年幼儿园卫生保健工作总结
2015/05/12 职场文书
跑出一片天观后感
2015/06/08 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书
2016优秀青年志愿者事迹材料
2016/02/25 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
推荐六本经典文学奖书籍:此生必读
2019/08/22 职场文书
Python使用MapReduce进行简单的销售统计
2022/04/22 Python