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 相关文章推荐
用文本文件制作留言板提示(下)
Oct 09 PHP
不用mod_rewrite直接用php实现伪静态化页面代码
Oct 04 PHP
PHP+ACCESS 文章管理程序代码
Jun 21 PHP
与文件上传有关的php配置参数总结
Jun 14 PHP
PHP 二维数组根据某个字段排序的具体实现
Jun 03 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
Aug 04 PHP
Codeigniter购物车类不能添加中文的解决方法
Nov 29 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
Sep 30 PHP
PHP动态生成指定大小随机图片的方法
Mar 25 PHP
orm获取关联表里的属性值
Apr 17 PHP
Yii2实现中国省市区三级联动实例
Feb 08 PHP
php 生成加密公钥加密私钥实例详解
Jun 16 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中自定义函数dump查看数组信息类似var_dump
2014/01/27 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
JavaScript 无符号右移运算符
2009/04/17 Javascript
jQuery EasyUI API 中文文档 - Pagination分页
2011/09/29 Javascript
优化Jquery,提升网页加载速度
2013/11/14 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
浅析jQuery Ajax通用js封装
2016/06/22 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
Vue脚手架的简单使用实例
2018/07/10 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
Python实现的简单计算器功能详解
2018/08/25 Python
使用python生成杨辉三角形的示例代码
2018/08/29 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
Html5新增标签有哪些
2017/04/13 HTML / CSS
Europcar比利时:租车
2019/08/26 全球购物
C#如何判断当前用户是否输入某个域
2015/12/07 面试题
教师个人自我评价范文
2014/04/13 职场文书
社区维稳工作方案
2014/06/06 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
商业门面租房协议书
2014/11/25 职场文书
5.12护士节活动总结
2015/02/10 职场文书
2015年度房地产工作总结
2015/04/09 职场文书
初中运动会前导词
2015/07/20 职场文书