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 相关文章推荐
PHP4实际应用经验篇(3)
Oct 09 PHP
PHP连接access数据库
Mar 27 PHP
php csv操作类代码
Dec 14 PHP
基于curl数据采集之单页面采集函数get_html的使用
Apr 28 PHP
getJSON跨域SyntaxError问题分析
Aug 07 PHP
thinkphp缓存技术详解
Dec 09 PHP
ThinkPHP开发框架函数详解:C方法
Aug 14 PHP
分享PHP-pcntl 实现多进程代码
Sep 30 PHP
微信 开发生成带参数的二维码的实例
Nov 23 PHP
php获取数据库中数据的实现方法
Jun 01 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
laravel 执行迁移回滚示例
Oct 23 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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
PHP中调用ASP.NET的WebService的代码
2011/04/22 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
php cookie用户登录的详解及实例代码
2017/01/03 PHP
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
2012/01/13 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
全面解析Bootstrap排版使用方法(文字样式)
2015/11/30 Javascript
一系列Bootstrap导航条使用方法分享
2016/04/29 Javascript
Express之get,pos请求参数的获取
2017/05/02 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
vue 2.1.3 实时显示当前时间,每秒更新的方法
2018/09/16 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
Python中Collection的使用小技巧
2014/08/18 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
python sys.argv[]用法实例详解
2018/05/25 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
pandas dataframe添加表格框线输出的方法
2019/02/08 Python
Django 重写用户模型的实现
2019/07/29 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
python3中pip3安装出错,找不到SSL的解决方式
2019/12/12 Python
python词云库wordcloud的使用方法与实例详解
2020/02/17 Python
举例详解HTML5中使用JSON格式提交表单
2015/06/16 HTML / CSS
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
《太阳》教学反思
2014/02/21 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
关于安全演讲稿
2014/05/09 职场文书
中学校园广播稿
2015/08/18 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript