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的bbs设计(二)
Oct 09 PHP
php之对抗Web扫描器的脚本技巧
Oct 01 PHP
PHP中spl_autoload_register()和__autoload()区别分析
May 10 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
Dec 26 PHP
PHP随机生成唯一HASH值自定义函数
Apr 20 PHP
php header函数的常用http头设置
Jun 25 PHP
php版微信数据统计接口用法示例
Oct 12 PHP
PHP中创建和编辑Excel表格的方法
Sep 13 PHP
PHP实现简易计算器功能
Aug 28 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
May 29 PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 21 PHP
Yii框架操作cookie与session的方法实例详解
Sep 04 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 #PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 #PHP
php检查函数必传参数是否存在的实例详解
Aug 28 #PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 #PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 #PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 #PHP
PHP基于递归实现的约瑟夫环算法示例
Aug 27 #PHP
You might like
Session的工作方式
2006/10/09 PHP
PHP设计模式之装饰者模式
2012/02/29 PHP
php实现读取内存顺序号
2015/03/29 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
2017/02/08 PHP
java script编程起步(第三课)
2007/01/10 Javascript
JScript中的&quot;this&quot;关键字使用方式补充材料
2007/03/08 Javascript
IE8 兼容性问题(属性名区分大小写)
2009/06/04 Javascript
JavaScript中的prototype使用说明
2010/04/13 Javascript
js对象关系图 方便dom操作
2012/03/18 Javascript
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
js实现超酷的照片墙展示效果图附源码下载
2015/10/08 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
详解用webpack2.0构建vue2.0超详细精简版
2017/04/05 Javascript
4个顶级JavaScript高级文本编辑器
2018/10/10 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
vue中的mvvm模式讲解
2019/01/31 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
vue实现购物车加减
2020/05/30 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
2015/04/28 Python
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
python进阶之自定义可迭代的类
2019/08/20 Python
Python实现京东抢秒杀功能
2021/01/25 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
美国女孩服装购物网站:Justice
2017/03/04 全球购物
瑞典的玛丽小姐:Miss Mary of Sweden
2019/02/13 全球购物
护士辞职信模板
2014/01/20 职场文书
高中家长寄语
2014/04/02 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
python爬取某网站原图作为壁纸
2021/06/02 Python
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang