thinkphp ajaxfileupload实现异步上传图片的示例

发布时间 - 2026-01-11 02:59:27    点击率:

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文件是不是版本的问题

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# thinkphp  # ajaxfileupload  # 异步  # 异步上传  # TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析  # thinkphp3.2实现上传图片的控制器方法  # thinkPHP利用ajax异步上传图片并显示、删除的示例  # thinkphp5上传图片及生成缩略图公共方法(分享)  # thinkPHP实现上传图片及生成缩略图功能示例  # 使用ThinkPHP+Uploadify实现图片上传功能  # ThinkPHP实现图片上传操作的方法详解  # thinkphp jquery实现图片上传和预览效果  # 基于ThinkPHP5.0实现图片上传插件  # ThinkPHP5+Layui实现图片上传加预览功能  # ThinkPHP5.0 图片上传生成缩略图实例代码说明  # TP框架实现上传一张图片和批量上传图片的方法分析  # 上传  # 报错  # 表单  # 图片上传  # 我就  # 则是  # 会在  # 会给  # 后将  # 先在  # 上传图片  # 大家多多  # 不写  # 保存为  # 文件上传  # 图片处理  # 就好了  # 是目前  # file  # id 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 文字头像制作网站推荐软件,醒图能自动配文字吗?  Laravel用户密码怎么加密_Laravel Hash门面使用教程  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  深圳网站制作培训,深圳哪些招聘网站比较好?  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  如何快速搭建个人网站并优化SEO?  电商网站制作价格怎么算,网上拍卖流程以及规则?  如何在万网开始建站?分步指南解析  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  如何用美橙互联一键搭建多站合一网站?  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  如何在服务器上三步完成建站并提升流量?  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  如何确保FTP站点访问权限与数据传输安全?  公司门户网站制作流程,华为官网怎么做?  LinuxShell函数封装方法_脚本复用设计思路【教程】  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  如何在云主机上快速搭建网站?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  昵图网官方站入口 昵图网素材图库官网入口  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  如何有效防御Web建站篡改攻击?  网站制作免费,什么网站能看正片电影?  如何在景安服务器上快速搭建个人网站?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  ,在苏州找工作,上哪个网站比较好?  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  Laravel如何配置Horizon来管理队列?(安装和使用)  Python进程池调度策略_任务分发说明【指导】  如何快速生成可下载的建站源码工具?  Android Socket接口实现即时通讯实例代码  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  清除minerd进程的简单方法  如何在IIS中新建站点并配置端口与IP地址?  香港服务器部署网站为何提示未备案?  香港服务器租用每月最低只需15元?  jQuery中的100个技巧汇总  Laravel如何记录自定义日志?(Log频道配置)  如何自定义建站之星网站的导航菜单样式?  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  iOS中将个别页面强制横屏其他页面竖屏  高防服务器租用首荐平台,企业级优惠套餐快速部署  开心动漫网站制作软件下载,十分开心动画为何停播?  焦点电影公司作品,电影焦点结局是什么?  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  个人摄影网站制作流程,摄影爱好者都去什么网站?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置