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 相关文章推荐
兼容firefox,chrome的网页灰度效果
Aug 08 PHP
解析ajax事件的调用顺序
Jun 17 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
Jun 24 PHP
php更新修改excel中的内容实例代码
Feb 26 PHP
php 使用array函数实现分页
Feb 13 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
Mar 04 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
May 13 PHP
php变量与数组相互转换的方法(extract与compact)
Dec 02 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
May 12 PHP
php调用云片网接口发送短信的实现方法
Oct 25 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 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实现的http请求封装示例
2016/11/08 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
Javascript浅谈之引用类型
2013/12/18 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
详解vue中组件参数
2018/07/09 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
2018/12/12 Javascript
Electron + vue 打包桌面操作流程详解
2019/06/24 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
解决pycharm双击但是无法打开的情况
2020/10/31 Javascript
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
Python 冒泡,选择,插入排序使用实例
2015/02/05 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
python 读取文件并替换字段的实例
2018/07/12 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
美国时尚假发购物网站:Wigsbuy
2019/04/06 全球购物
护士实习自我鉴定
2013/10/22 职场文书
应届生保险求职信
2013/11/11 职场文书
取保候审保证书
2014/04/30 职场文书
爱之链教学反思
2014/04/30 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
三严三实学习心得体会
2014/10/13 职场文书
信访工作个人总结
2015/03/03 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书
四年级语文教学反思
2016/03/03 职场文书
不要在HTML中滥用div
2021/05/08 HTML / CSS
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python