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

 更新时间:2017年01月18日 09:40:18   作者:肖哥哥  
本篇文章主要介绍了springMVC+ajax实现文件上传且带进度条实例,具有一定的参考价值,有兴趣的可以了解一下。

前端代码:

<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>

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

相关文章

  • java高级应用:线程池的全面讲解(干货)

    java高级应用:线程池的全面讲解(干货)

    这篇文章主要介绍了java高级应用:线程池的全面讲解(干货),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 怎么把本地jar包放入本地maven仓库和远程私服仓库

    怎么把本地jar包放入本地maven仓库和远程私服仓库

    这篇文章主要介绍了怎么把本地jar包放入本地maven仓库和远程私服仓库的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • easycode配置成mybatis-plus模板的实现方法

    easycode配置成mybatis-plus模板的实现方法

    本文主要介绍了easycode配置成mybatis-plus模板的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • SpringCloud基本Rest微服务工程搭建过程

    SpringCloud基本Rest微服务工程搭建过程

    这篇文章主要介绍了SpringCloud基本Rest微服务工程搭建,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • JVM内存模型知识点总结

    JVM内存模型知识点总结

    在本篇文章里小编给大家分享了关于JVM内存模型的学习心得以及相关知识点总结,有兴趣的朋友们跟着学习下。
    2019-05-05
  • 浅析JDBC的使用方法

    浅析JDBC的使用方法

    这篇文章主要介绍了JDBC的使用方法,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-08-08
  • java8保姆级lambda表达式教程

    java8保姆级lambda表达式教程

    这篇文章主要介绍了Java8之后的Lambda表达式的用法,lambda表达式将大量替代匿名内部类的使用,简化代码的同时,更突出了原来匿名内部类中最重要的那部分包含真正逻辑的代码,需要的朋友可以参考下
    2023-03-03
  • java网上图书商城(6)订单模块1

    java网上图书商城(6)订单模块1

    这篇文章主要为大家详细介绍了java网上图书商城,订单模块,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Java中的LinkedHashSet源码解读

    Java中的LinkedHashSet源码解读

    这篇文章主要介绍了Java中的LinkedHashSet源码解读,LinkedHashSet 是 Java 中的一个集合类,它是 HashSet 的子类,并实现了 Set 接口,与 HashSet 不同的是,LinkedHashSet 保留了元素插入的顺序,并且具有 HashSet 的快速查找特性,需要的朋友可以参考下
    2023-09-09
  • 一段眼睛跟着鼠标转动的跟踪眼代码

    一段眼睛跟着鼠标转动的跟踪眼代码

    java实现的眼睛跟着鼠标转动的跟踪眼代码
    2008-10-10

最新评论