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脚本
Nov 26 PHP
PHP 开发环境配置(Zend Studio)
Apr 28 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
Aug 12 PHP
php随机显示图片的简单示例
Feb 15 PHP
PHP判断文章里是否有图片的简单方法
Jul 26 PHP
使用PHP生成PDF方法详解
Jan 23 PHP
php获取发送给用户的header信息的方法
Mar 16 PHP
PHP魔术方法以及关于独立实例与相连实例的全面讲解
Oct 18 PHP
PHP 文件上传后端处理实用技巧方法
Jan 06 PHP
thinkphp3.2.0 setInc方法 源码全面解析
Jan 29 PHP
laravel 修改记住我功能的cookie保存时间的方法
Oct 14 PHP
tp5.1 框架查询表达式用法详解
May 25 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实现文件与16进制相互转换的方法示例
2017/02/16 PHP
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
控制页面按钮在后台执行期间不重复提交的JS方法
2013/06/24 Javascript
不提示直接关闭网页窗口的JS示例代码
2013/12/17 Javascript
jquery单行文字向上滚动效果示例
2014/03/06 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
2014/06/20 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
详细解密jsonp跨域请求
2015/04/15 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
Python中变量交换的例子
2014/08/25 Python
Python基于动态规划算法计算单词距离
2015/07/25 Python
有趣的python小程序分享
2017/12/05 Python
Python多进程与服务器并发原理及用法实例分析
2018/08/21 Python
使用EduBlock轻松学习Python编程
2018/10/08 Python
Python2与Python3的区别详解
2020/02/09 Python
Python configparser模块操作代码实例
2020/06/08 Python
matplotlib.pyplot.plot()参数使用详解
2020/07/28 Python
Python创建临时文件和文件夹
2020/08/05 Python
使用CSS3的背景渐变Text Gradient 创建文字颜色渐变
2014/08/19 HTML / CSS
CSS3中HSL和HSLA的简单使用示例
2015/07/14 HTML / CSS
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
巴西女装购物网站:Eclectic
2018/04/24 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
医生进修自我鉴定
2014/01/19 职场文书
告诉你怎样写创业计划书
2014/01/27 职场文书
关于热爱祖国的演讲稿
2014/05/04 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
现实表现材料范文
2014/12/23 职场文书
新生入学欢迎词
2015/01/26 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
Python源码解析之List
2021/05/21 Python