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 相关文章推荐
一个域名查询的程序
Oct 09 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
Jun 18 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
Jan 03 PHP
php实现session自定义会话处理器的方法
Jan 27 PHP
php建立Ftp连接的方法
Mar 07 PHP
php在数组中查找指定值的方法
Mar 17 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
Jul 03 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
php好代码风格的阶段性总结
Jun 25 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
May 12 PHP
详解PHP使用Redis存储session时的一个Warning定位
Jul 05 PHP
docker-compose部署php项目实例详解
Jul 30 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
linux iconv方法的使用
2011/10/01 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
使用PHP导出Redis数据到另一个Redis中的代码
2014/03/12 PHP
PHP实现数组递归转义的方法
2014/08/28 PHP
如何使用GDB调试PHP程序
2015/12/08 PHP
yii2 页面底部加载css和js的技巧
2016/04/21 PHP
nodejs win7下安装方法
2012/05/24 NodeJs
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
2016/01/12 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
Angular2 路由问题修复详解
2017/03/01 Javascript
微信小程序canvas截取任意形状的实现代码
2020/01/13 Javascript
微信小程序吸底区域适配iPhoneX的实现
2020/04/09 Javascript
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
Python代码需要缩进吗
2020/07/01 Python
如何使用Python进行PDF图片识别OCR
2021/01/22 Python
飞利浦美国官网:Philips美国
2020/02/28 全球购物
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
Linux上比较文件的命令都有哪些
2013/09/28 面试题
汽车运用工程毕业生自荐信
2013/10/29 职场文书
平面设计求职信
2014/03/10 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
安全先进班组材料
2014/12/26 职场文书
六一领导慰问欢迎词
2015/01/26 职场文书
2015年幼师工作总结
2015/04/28 职场文书
中国合伙人观后感
2015/06/02 职场文书
诚信考试主题班会
2015/08/17 职场文书
Python的flask接收前台的ajax的post数据和get数据的方法
2021/04/12 Python
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python
python调试工具Birdseye的使用教程
2021/05/25 Python
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫