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中使用Oracle数据库(2)
Oct 09 PHP
MySQL中create table语句的基本语法是
Jan 15 PHP
PHP如何抛出异常处理错误
Mar 02 PHP
深入php数据采集的详解
Jun 02 PHP
destoon调用discuz论坛中带图片帖子的实现方法
Aug 21 PHP
zen_cart实现支付前生成订单的方法
May 06 PHP
php查询操作实现投票功能
May 09 PHP
php简单实现多维数组排序的方法
Sep 30 PHP
ThinkPHP简单使用memcache缓存的方法
Nov 15 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
Jun 10 PHP
laravel框架 api自定义全局异常处理方法
Oct 11 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 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
使用 php4 加速 web 传输
2006/10/09 PHP
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
学习js所必须要知道的一些
2007/03/07 Javascript
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
javascript 设置文本框中焦点的位置
2009/11/20 Javascript
js 数值项目的格式化函数代码
2010/05/14 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
2014/02/11 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
vue 中自定义指令改变data中的值
2017/06/02 Javascript
js中url对象化管理分析
2017/12/29 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
[46:32]Fnatic vs OG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Django之模板层的实现代码
2019/09/09 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
pytorch中的weight-initilzation用法
2020/06/24 Python
Css3圆角边框制作代码
2015/11/18 HTML / CSS
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
IE9对HTML5中部分属性不支持的原因分析
2014/10/15 HTML / CSS
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
小学数学教学反思
2014/02/02 职场文书
pytest配置文件pytest.ini的详细使用
2021/04/17 Python
如何在Python项目中引入日志
2021/05/31 Python
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL
mysql insert 存在即不插入语法说明
2022/03/25 MySQL
Go语言grpc和protobuf
2022/04/13 Golang
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS