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 limit查询优化分析
Nov 12 PHP
php 过滤危险html代码
Jun 29 PHP
php适配器模式介绍
Aug 14 PHP
解析php多线程下载远程多个文件
Jun 25 PHP
destoon二次开发模板及调用语法汇总
Jun 21 PHP
php生成shtml类用法实例
Dec 09 PHP
PHP Hash算法:Times33算法代码实例
May 13 PHP
PHP IDE phpstorm 常用快捷键
May 18 PHP
php单一接口的实现方法
Jun 20 PHP
详解php的socket通信
Aug 11 PHP
Laravel中如何增加自定义全局函数详解
May 09 PHP
laravel通用化的CURD的实现
Dec 13 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
关于在php.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
PHP获取数组最后一个值的2种方法
2015/01/21 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
类似GMAIL的Ajax信息反馈显示
2010/02/16 Javascript
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
JS操作Cookie写入和读取实例代码
2013/10/20 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
js 动态给元素添加、移除事件的实现方法
2016/07/19 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
2017/01/19 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
webpack手动配置React开发环境的步骤
2018/07/02 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
nodejs对项目下所有空文件夹创建gitkeep的方法
2019/08/02 NodeJs
利用JS如何获取form表单数据
2019/12/19 Javascript
python2.x实现人民币转大写人民币
2018/06/20 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
python matplotlib实现双Y轴的实例
2019/02/12 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
python实现网页录音效果
2020/10/26 Python
html5 标签
2009/07/16 HTML / CSS
如何开启linux的ssh服务
2015/02/14 面试题
英文求职信写作小建议
2014/02/16 职场文书
募捐倡议书
2014/04/14 职场文书
全国税务系统先进集体事迹材料
2014/05/19 职场文书
2019年世界儿童日宣传标语
2019/11/22 职场文书