使用FormData实现上传多个文件
作者:半笙彷徨 发布时间:2024-05-11 09:30:20
标签: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";
}
前端页面:
请求:
来源:https://blog.csdn.net/wang704987562/article/details/80304471


猜你喜欢
- 目标:在64位linux系统上编译出32位程序。操作:1.执行 go env 查看当前go环境配置2.执行 export GOARCH=38
- 在做我的友情链接批量检查工具过程中,碰到一些情况,就是对方网页会用gzip压缩。用gzip压缩的好处是,能压缩网页大小,加快网页的浏览速度,
- 序列概念在分片规则里list、tuple、str(字符串)都可以称为序列,都可以按规则进行切片操作切片操作注意切片的下标0代表顺序的第一个元
- 本文实例讲述了Golang编程实现删除字符串中出现次数最少字符的方法。分享给大家供大家参考,具体如下:描述:实现删除字符串中出现次数最少的字
- 问题一:在安装时候输入 net start mysql 时候报错为:net不是内部或外部命令也不是可运行。解决方法: 环境变量的问题:首先确
- 本文深入剖析了python中dict,set,list,tuple应用及对应示例,有助于读者对其概念及原理的掌握。具体如下:1.字典(dic
- 安装pip install requests发送网络请求import requestsr=requests.get('http://
- 当然还是要使用FileSystemObject(FSO)来创建了。不过在创建前,要先检查以下目录是否存在,如果存在,就不用创建了: 
- 知道python有这几个内置方法,但一直以来用的都不多,最近重新看了一下,重新记录一下。map()会根据提供的函数对指定序列进行映射,pyt
- 学习关键语句:vue连接mysql数据库vue项目连接后台数据库配置vue通过node连接MySQL数据库写在前面为了快速学习nodejs制
- 我们知道,mysql是持久化存储,存放在磁盘里面,检索的话,会涉及到一定的IO,为了解决这个瓶颈,于是出现了缓存,比如现在用的最多的 mem
- 在函数参数中乱用表达式作为默认值Python允许给一个函数的某个参数设置默认值以使该参数成为一个可选参数。尽管这是这门语言很棒的一个功能,但
- 切片从list或tuple中取部分元素。list = [1, 2, 3, 4]list[0 : 3] # [1, 2, 3]list[-2
- 前言这几天比较空闲,就接触了下百度地图的API(开发者中心链接地址:http://developer.baidu.com),发现调用还是挺方
- sqoop是一款用于hadoop和关系型数据库之间数据导入导出的工具。你可以通过sqoop把数据从数据库(比如mysql,oracle)导入
- Javascript有没有内存泄露?如果有,如何避免?鉴于最近有好几个人问到我类似的问题,看来大家对这部分内容还没有系统的研究过,因此,打算
- 方法一: import win32com.clientxl = win32com.client.Dispatch("Ex
- 一开始都是先去《英雄联盟》官网找到英雄及皮肤图片的网址:URL = r'https://lol.qq.com/data/info-h
- 1、炫酷星空登录实现代码<!DOCTYPE HTML><html><head><meta http
- 什么是目标检测目标检测关注图像 * 定的物体目标,需要同时解决解决定位(localization) + 识别(Recognition)。相比分