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统计文章排行示例
Mar 04 PHP
php获取URL中带#号等特殊符号参数的解决方法
Sep 02 PHP
php自定义apk安装包实例
Oct 20 PHP
php函数serialize()与unserialize()用法实例
Nov 06 PHP
php的闭包(Closure)匿名函数初探
Feb 14 PHP
php文件系统处理方法小结
May 23 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
Aug 12 PHP
PHP XML和数组互相转换详解
Oct 26 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
Jul 03 PHP
PHP 对象接口简单实现方法示例
Apr 13 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
Sep 17 PHP
PHP sdk文档处理常用代码示例解析
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
一个简单的php MVC留言本实例代码(必看篇)
2016/09/22 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
thinkPHP显示不出验证码的原因与解决方法分析
2017/05/20 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
动态改变div的z-index属性的简单实例
2013/08/08 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
利用jquery写的左右轮播图特效
2014/02/12 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
react-navigation之动态修改title的内容
2018/09/26 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
layui实现三级联动效果
2019/07/26 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
2019/09/02 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
Python开发常用的一些开源Package分享
2015/02/14 Python
用Python的pandas框架操作Excel文件中的数据教程
2015/03/31 Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
2016/04/20 Python
Python中GIL的使用详解
2018/10/03 Python
简单了解python代码优化小技巧
2019/07/08 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
德国EGOIST网店:销售畅销的设计师品牌
2017/04/18 全球购物
法务专员岗位职责
2014/01/02 职场文书
2015年财务工作总结范文
2015/03/31 职场文书
唐山大地震的观后感
2015/06/05 职场文书
Python中tkinter的用户登录管理的实现
2021/04/22 Python