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发送邮件类代码附详细说明
Jul 10 PHP
php 文件夹删除、php清除缓存程序
Aug 25 PHP
php date与gmdate的获取日期的区别
Feb 08 PHP
PHP原理之异常机制深入分析
Aug 08 PHP
Mysql中分页查询的两个解决方法比较
May 02 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
Oct 29 PHP
thinkphp模板赋值与替换实例简述
Nov 24 PHP
php检查字符串中是否有外链的方法
Jul 29 PHP
PHP图片添加水印功能示例小结
Oct 03 PHP
php实现的读取CSV文件函数示例
Feb 07 PHP
PHP实现一个轻量级容器的方法
Jan 28 PHP
PHP addAttribute()函数讲解
Feb 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
php中变量及部分适用方法
2008/03/27 PHP
PHP求最大子序列和的算法实现
2011/06/24 PHP
PHP中几个常用的魔术常量
2012/02/23 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
Yii2实现让关联字段支持搜索功能的方法
2016/08/10 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
javascript实现焦点滚动图效果 具体方法
2013/06/24 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
JavaScript手机振动API
2016/06/11 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
2016/08/09 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
express如何使用session与cookie的方法
2018/01/30 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
JavaScript实现网页跨年倒计时
2020/12/02 Javascript
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
Python中encode()方法的使用简介
2015/05/18 Python
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
Python 查看文件的读写权限方法
2018/01/23 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
python socket通信编程实现文件上传代码实例
2019/12/14 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
GUESS Factory加拿大:牛仔裤、服装及配饰
2019/09/20 全球购物
智能钱包:Ekster
2019/11/21 全球购物
英文翻译的自我评价语句
2013/10/04 职场文书
金属材料工程毕业生个人的自我评价
2013/11/28 职场文书
会计专业大学生职业生涯规划书
2014/02/11 职场文书
客户接待方案
2014/02/26 职场文书
新春联欢会主持词
2014/03/24 职场文书
病媒生物防治方案
2014/05/13 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
七一建党节演讲稿
2014/09/11 职场文书
SpringBoot2零基础到精通之数据与页面响应
2022/03/22 Java/Android