springMVC+ajax实现文件上传且带进度条实例

发布时间 - 2026-01-10 22:36:34    点击率:

前端代码:

<form id= "uploadForm"> 
   <p >指定文件名: <input type="text" name="filename" value= ""/></p > 
   <p >上传文件: <input type="file" name="file"/></ p> 
   <input type="button" value="上传" onclick="doUpload()" /> 
</form> 

function doUpload() { 
   var formData = new FormData($( "#uploadForm" )[0]); 
   $.ajax({ 
     url: 'http://localhost:8080/xiaochangwei/file/upload' , 
     type: 'POST', 
     data: formData, 
     async: false, 
     cache: false, 
     contentType: false, 
     processData: false, 
     success: function (returndata) { 
       alert(returndata); 
     }, 
     error: function (returndata) { 
       alert(returndata); 
     } 
   }); 
}

后端:

@RequestMapping(value = "/upload", method = RequestMethod.POST)
  public String upload(HttpServletRequest request, @RequestParam("file") MultipartFile file, ModelMap model) {
    System.out.println("开始");
    String path = request.getSession().getServletContext().getRealPath("upload");
    String fileName = file.getOriginalFilename();
    // String fileName = new Date().getTime()+".jpg";
    System.out.println(path);
    File targetFile = new File(path, fileName);
    if (!targetFile.exists()) {
      targetFile.mkdirs();
    }

    // 保存
    try {
      file.transferTo(targetFile);
    } catch (Exception e) {
      e.printStackTrace();
    }
    model.addAttribute("fileUrl", request.getContextPath() + "/upload/" + fileName);
    return "result";
  }

如果前端有很多实体类数据同文件一同提交

可以修改后端方法为:

复制代码 代码如下:
upload(HttpServletRequest request, @RequestParam("file") MultipartFile file, ModelMap model,User user)

利用下面的代码更可实现带有进度条的文件上传

<script type="text/javascript">

    function UpladFile() {
      var fileObj = document.getElementById("file").files[0]; // js 获取文件对象
      var FileController = "http://localhost:8080/xiaochangwei/file/upload";          // 接收上传文件的后台地址 

      // FormData 对象
      var form = new FormData($( "#uploadForm" )[0]);

      // XMLHttpRequest 对象
      var xhr = new XMLHttpRequest();
      xhr.open("post", FileController, true);
      xhr.onload = function () {
        // alert("上传完成!");
      };

      xhr.upload.addEventListener("progress", progressFunction, false);
      xhr.send(form);
    }

    function progressFunction(evt) {
      var progressBar = document.getElementById("progressBar");
      var percentageDiv = document.getElementById("percentage");
      if (evt.lengthComputable) {
        progressBar.max = evt.total;
        progressBar.value = evt.loaded;
        percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) + "%";
        if(evt.loaded==evt.total){
          alert("上传完成100%");
        }
      }
    } 

  </script>
  

  <progress id="progressBar" value="0" max="100"></progress>


<form id= "uploadForm">

  <input type="file" id="file" name="myfile" />
  <input type="button" onclick="UpladFile()" value="上传" />

</form>

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


# springmvc  # 上传进度条  # ajax  # 上传  # spring  # mvc进度条  # 利用SpringMVC和Ajax实现文件上传功能  # SpringMVC+Ajax实现文件批量上传和下载功能实例代码  # springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项  # SpringMVC结合ajaxfileupload实现文件无刷新上传代码  # SpringMVC结合ajaxfileupload.js实现文件无刷新上传  # springMVC结合AjaxForm上传文件  # Springmvc加ajax实现上传文件并页面局部刷新  # 上传文件  # 后端  # 有很多  # 大家多多  # 文件上传  # 进度条  # 实体类  # false  # async  # cache  # success  # processData  # contentType  # upload  # System  # error  # model  # data  # POST 


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


相关推荐: 高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  文字头像制作网站推荐软件,醒图能自动配文字吗?  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  b2c电商网站制作流程,b2c水平综合的电商平台?  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  香港服务器租用每月最低只需15元?  如何确保西部建站助手FTP传输的安全性?  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  如何在万网自助建站中设置域名及备案?  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  javascript读取文本节点方法小结  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  phpredis提高消息队列的实时性方法(推荐)  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  移动端脚本框架Hammer.js  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  七夕网站制作视频,七夕大促活动怎么报名?  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  Android okhttputils现在进度显示实例代码  如何基于PHP生成高效IDC网络公司建站源码?  linux top下的 minerd 木马清除方法  如何做网站制作流程,*游戏网站怎么搭建?  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  Bootstrap整体框架之CSS12栅格系统  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  JavaScript如何实现类型判断_typeof和instanceof有什么区别  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  如何在万网利用已有域名快速建站?  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  Laravel如何处理表单验证?(Requests代码示例)  如何在IIS7中新建站点?详细步骤解析  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  浅析上传头像示例及其注意事项  高性能网站服务器配置指南:安全稳定与高效建站核心方案  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  图册素材网站设计制作软件,图册的导出方式有几种?  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  Laravel如何使用Gate和Policy进行授权?(权限控制)  昵图网官网入口 昵图网素材平台官方入口