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递归调用与静态变量使用
Dec 16 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
Jul 10 PHP
10个简化PHP开发的工具
Dec 25 PHP
PHP异常处理浅析
May 12 PHP
给WordPress的编辑后台添加提示框的代码实例分享
Dec 25 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
May 17 PHP
Symfony2创建基于域名的路由相关示例
Nov 14 PHP
简单实现PHP留言板功能
Dec 21 PHP
PHP正则删除HTML代码中宽高样式的方法
Jun 12 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
php字符串过滤strip_tags()函数用法实例分析
Jun 24 PHP
Yii 实现数据加密和解密
Mar 09 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 strtok()函数的优点分析
2010/03/02 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
利用php-cli和任务计划实现订单同步功能的方法
2017/05/03 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
Js基础学习资料
2010/11/23 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
JS 对输入框进行限制(常用的都有)
2013/07/30 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
利用node实现一个批量重命名文件的函数
2017/12/21 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
python实现爬虫下载漫画示例
2014/02/16 Python
python使用点操作符访问字典(dict)数据的方法
2015/03/16 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
Python代码实现http/https代理服务器的脚本
2019/08/12 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
python怎么对数字进行过滤
2020/07/05 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
幼儿园社区活动总结
2014/07/07 职场文书
给妈妈洗脚活动方案
2014/08/16 职场文书
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
2014年领导班子工作总结
2014/12/11 职场文书
员工工作能力评语
2014/12/31 职场文书
2016年父亲节寄语
2015/12/04 职场文书
Golang Gob编码(gob包的使用详解)
2021/05/07 Golang
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
2022/04/29 Servers