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 相关文章推荐
一个用mysql_odbc和php写的serach数据库程序
Oct 09 PHP
UTF8编码内的繁简转换的PHP类
Jul 09 PHP
PHP高自定义性安全验证码代码
Nov 27 PHP
PHP If Else(elsefi) 语句
Apr 07 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
Sep 28 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
Nov 19 PHP
迁移PHP版本到PHP7
Feb 06 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
Apr 27 PHP
php nginx 实时输出的简单实现方法
Jan 21 PHP
浅析php如何实现爬取数据原理
Sep 27 PHP
PHP预定义接口――Iterator用法示例
Jun 05 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操作csv文件代码实例汇总
2014/09/22 PHP
PHP生成随机字符串(3种方法)
2015/09/25 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
2010/03/23 Javascript
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
js日期相关函数总结分享
2013/10/15 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
JavaScript实现列出数组中最长的连续数
2014/12/29 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
JavaScript获取并更改input标签name属性的方法
2015/07/02 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
javascript实现动态显示颜色块的报表效果
2017/04/10 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
2019/09/06 Javascript
利用Python学习RabbitMQ消息队列
2015/11/30 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
纯净、自信、100%的羊绒服装:360Cashmere
2021/02/20 全球购物
中医学专业自荐信范文
2014/04/01 职场文书
关于中国梦的演讲稿
2014/04/23 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
太空授课观后感
2015/06/17 职场文书
2016年度创先争优活动总结
2016/04/05 职场文书
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers