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学习之PHP运算符
Oct 09 PHP
隐性调用php程序的方法
Mar 09 PHP
PHP 多进程 解决难题
Jun 22 PHP
php 空格,换行,跳格使用说明
Dec 18 PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 PHP
php fsockopen解决办法 php实现多线程
Jan 20 PHP
PHP引用(&amp;)各种使用方法实例详解
Mar 20 PHP
PHP编程中的__clone()方法使用详解
Nov 27 PHP
PHP中file_exists使用中遇到的问题小结
Apr 05 PHP
jQuery+php简单实现全选删除的方法
Nov 28 PHP
PHP 序列化和反序列化函数实例详解
Jul 18 PHP
Docker搭建自己的PHP开发环境
Feb 24 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 Document 代码注释规范
2009/04/13 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
2010/04/12 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
PHP高效获取远程图片尺寸和大小的实现方法
2017/10/20 PHP
PHP+Oracle本地开发环境搭建方法详解
2019/04/01 PHP
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
JS实现对json对象排序并删除id相同项功能示例
2018/04/18 Javascript
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
Python学习笔记之os模块使用总结
2014/11/03 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
PyCharm 常用快捷键和设置方法
2017/12/20 Python
Python使用functools实现注解同步方法
2018/02/06 Python
Python实现时钟显示效果思路详解
2018/04/11 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
Numpy的简单用法小结
2019/08/28 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
python如何调用java类
2020/07/05 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
兰芝美国网上商城:购买LANEIGE睡眠面膜等
2017/06/30 全球购物
iHerb台湾:维生素、保健品和健康产品
2018/01/31 全球购物
Python的两道面试题
2013/06/29 面试题
十八大闭幕感言
2014/01/22 职场文书
会走路的树教学反思
2014/02/20 职场文书
纪检监察建议书
2014/05/19 职场文书
学校师德承诺书
2014/05/23 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
小学班长竞选稿
2015/11/20 职场文书
Spring boot应用启动后首次访问很慢的解决方案
2021/06/23 Java/Android
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB