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防止伪造数据从地址栏URL提交的方法
Aug 24 PHP
codeigniter发送邮件并打印调试信息的方法
Mar 21 PHP
php metaphone()函数的定义和用法
May 15 PHP
浅析PHP7新功能及语法变化总结
Jun 17 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
Jul 01 PHP
php中preg_replace_callback函数简单用法示例
Jul 21 PHP
PHP获取当前执行php文件名的代码
Mar 02 PHP
PHP基于自增数据如何生成不重复的随机数示例
May 19 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 PHP
PHP session垃圾回收机制实例分析
Jun 28 PHP
laravel 5.3 单用户登录简单实现方法
Oct 14 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
人大复印资料处理程序_输入篇
2006/10/09 PHP
php数字游戏 计算24算法
2012/06/10 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
如何在smarty中增加类似foreach的功能自动加载数据
2013/06/26 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
js限制文本框只能输入数字(正则表达式)
2012/07/15 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
js实现最短的XML格式化工具实例
2015/03/12 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
利用node实现一个批量重命名文件的函数
2017/12/21 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
2018/01/24 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
小程序指纹验证的实现代码
2018/12/04 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
2019/09/26 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
2020/08/27 Javascript
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
Python处理json字符串转化为字典的简单实现
2016/07/07 Python
Python 异常处理的实例详解
2017/09/11 Python
Linux下python3.7.0安装教程
2018/07/30 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
深入浅析python 协程与go协程的区别
2019/05/09 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
美国知名生活购物网站:Goop
2017/11/03 全球购物
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
海飞丝广告词
2014/03/20 职场文书
感恩母亲节演讲稿
2014/05/07 职场文书
小学数学教师研修感悟
2015/11/18 职场文书
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python