使用FormData实现上传多个文件

 更新时间:2018年12月04日 15:06:07   作者:半笙彷徨  
这篇文章主要为大家详细介绍了使用FormData实现上传多个文件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了FormData上传多个文件的具体代码,供大家参考,具体内容如下

由于项目中使用到,特此写个Demo

html代码:

<html>
<head>
 <title>Title</title>
 <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<form enctype="multipart/form-data" id="form_example">
 <input type="file" id="files" multiple/><br/><br/>
 <input type="submit" value="提交"/>
</form>

<div id='file-list-display'></div>
</body>
</html>

js代码:

<script type="text/javascript">
 $(document).ready(function () {
  var fileList = [];
  var fileCatcher = document.getElementById('form_example');
  var files = document.getElementById("files"), renderFileList;
  var fileListDisplay = document.getElementById('file-list-display'), sendFile;

  fileCatcher.addEventListener("submit", function (event) {
   event.preventDefault();
   //上传文件
   sendFile();
  });

  files.addEventListener("change", function (event) {
   for (var i = 0; i < files.files.length; i++) {
    fileList.push(files.files[i]);
   }
   renderFileList();
  });

  renderFileList = function () {
   fileListDisplay.innerHTML = '';
   fileList.forEach(function (file, index) {
    var fileDisplayEl = document.createElement("p");
    fileDisplayEl.innerHTML = (index + 1) + ":" + file.name;
    fileListDisplay.appendChild(fileDisplayEl);
   })
  };

  sendFile = function () {
   var formData = new FormData();
   var request = new XMLHttpRequest();
   //循环添加到formData中
   fileList.forEach(function (file) {
    formData.append('files', file, file.name);
   })
   request.open("POST", "/test/upload.do");
   request.send(formData);
  }
 })
</script>

后端使用Spring MVC接收前端文件

配置multipart解析器:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
   p:defaultEncoding="utf-8"/>

Controller:

@RequestMapping("/upload.do")
@ResponseBody
public Object upload(@RequestParam MultipartFile[] files) {
  System.out.println(files.length);
  return "ok";
}

前端页面:

请求:

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

相关文章

  • 微信小程序渲染性能调优小结

    微信小程序渲染性能调优小结

    这篇文章主要介绍了微信小程序渲染性能调优,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-07-07
  • 原生js实现下拉选项卡

    原生js实现下拉选项卡

    这篇文章主要为大家详细介绍了原生js实现下拉选项卡,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • 如何利用JSHint减少JavaScript的错误

    如何利用JSHint减少JavaScript的错误

    JSHint是一个社区驱动用来检测JavaScript代码中错误和潜在的问题以及执行团队的编码规范工具。它非常灵活,因此可以很容易地适应您特定的编码规则和你的代码执行环境。JSHint将永远保持开源的方式。
    2016-08-08
  • HTML+CSS+JS实现抓娃娃机游戏

    HTML+CSS+JS实现抓娃娃机游戏

    这篇文章主要介绍了如何利用HTML+CSS+JS制作抓娃娃机游戏,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • js数组中删除重复值的代码小结

    js数组中删除重复值的代码小结

    最近需要用js控制数组,里面可能有一些重复的值,需要去掉,特为大家整理了这篇文章。
    2011-01-01
  • Javascript中匿名函数的调用与写法实例详解(多种)

    Javascript中匿名函数的调用与写法实例详解(多种)

    js中定义函数的方式有很多种,函数直接量就是其中一种,下面通过本文给大家介绍匿名函数是如何调用的及匿名函数的n中写法,对js匿名函数调用,js匿名函数写法相关知识感兴趣的朋友一起学习吧
    2016-01-01
  • C#中TrimStart,TrimEnd,Trim在javascript上的实现

    C#中TrimStart,TrimEnd,Trim在javascript上的实现

    今天在后台写了个类,后来才发现,需要在JS上做..于是把代码拷到js上进行修改,代码中用到TrimStart,TrimEnd,Trim等方法,在网上找半天竟然没找到.要么就只能清除空格的!
    2011-01-01
  • 详解ES6通过WeakMap解决内存泄漏问题

    详解ES6通过WeakMap解决内存泄漏问题

    本篇文章主要介绍了详解ES6通过WeakMap解决内存泄漏问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • JavaScript获取服务器时间的方法详解

    JavaScript获取服务器时间的方法详解

    这篇文章主要介绍了JavaScript获取服务器时间的方法,结合实例形式详细分析了javascript基于ajax获取服务器时间的相关操作技巧,需要的朋友可以参考下
    2016-12-12
  • js+css实现上下翻页相册代码分享

    js+css实现上下翻页相册代码分享

    这篇文章主要介绍了js+css实现上下翻页相册特效,相册可以从上方或者下方随意切换,推荐给大家,有需要的小伙伴可以参考下。
    2015-08-08

最新评论