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切割页面div内容的实现代码分享
Jul 31 PHP
详解php的魔术方法__get()和__set()使用介绍
Sep 19 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
Jul 28 PHP
php操作MongoDB类实例
Jun 17 PHP
PHP封装CURL扩展类实例
Jul 28 PHP
discuz图片顺序混乱解决方案
Jul 29 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
Aug 18 PHP
PHP使用数组依次替换字符串中匹配项
Jan 08 PHP
Yii2实现增删改查后留在当前页的方法详解
Jan 13 PHP
php获取手机端的号码以及ip地址实例代码
Sep 12 PHP
WordPress免插件实现面包屑导航的示例代码
Aug 20 PHP
详解Go与PHP的语法对比
May 29 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 cli 方式 在crotab中运行解决
2010/02/08 PHP
PHP计算日期相差天数实例分析
2016/02/23 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
javascrip客户端验证文件大小及文件类型并重置上传
2011/01/12 Javascript
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
jquery 快速回到页首的方法
2013/12/05 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
基于js对象,操作属性、方法详解
2016/08/11 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
JavaScript arguments.callee作用及替换方案详解
2020/09/02 Javascript
python写的ARP攻击代码实例
2014/06/04 Python
wxpython中自定义事件的实现与使用方法分析
2016/07/21 Python
python 函数中的参数类型
2020/02/11 Python
HTML5之SVG 2D入门12—SVG DOM及DOM操作介绍
2013/01/30 HTML / CSS
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
计算机开发个人求职信范文
2013/09/26 职场文书
新闻专业学生的自我评价
2014/02/13 职场文书
小学母亲节活动方案
2014/03/14 职场文书
2014年科室工作总结
2014/11/20 职场文书
大学优秀学生主要事迹材料
2015/11/04 职场文书
2019新员工试用期转正申请书3篇
2019/08/13 职场文书
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL