前端JSP页面代码片段:

<!-- springMVC包装类上传文件 -->
<form name="uploadFiles" id="uploadFiles" action="http://sdoa.vaiwan.com:8081/sdoa/file/uploadFiles.do" enctype="multipart/form-data" method="post">
<div id="addFilelist">
<div id="file_0">
<input type="file" name="file_0" multiple="multiple" >
</div>
</div>
<input type="button" id="btn_add_file" value="增加一行" onclick="add_file()">
<input type="submit" value="上传" >
</form>
<script>
j=1;
function add_file(){
document.getElementById("addFilelist").innerHTML+='<div id="file_'+j+'"><input name="file_'+j+'" type="file" /><input type="button" value="删除" onclick="del_file('+j+')"/></div>';
j = j + 1;
}
function del_file(o){
document.getElementById("addFilelist").removeChild(document.getElementById("file_"+o));
}
</script>

java后台SpringMVC uploadFilesController类代码
@RequestMapping("uploadFiles.do")
@ResponseBody
public String uploadFiles(HttpServletRequest request, HttpServletResponse response) throws IllegalStateException, IOException {
System.out.println("*********************进入uploadFiles(HttpServletRequest request, HttpServletResponse response)方法********************");
String returnPath = "";
//创建一个通用的多部分解析器 将当前上下文初始化给CommonsMultipartResolver多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
//判断 request 是否有文件上传,即多部分请求 检查form中是否有 enctype="multipart/form-data"属性值
if(multipartResolver.isMultipart(request)){
//转换成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
//取得request中的所有文件名
Iterator<String> iter = multiRequest.getFileNames();
while(iter.hasNext()){
//记录上传过程起始时的时间,用来计算上传时间
int pre = (int) System.currentTimeMillis();
//取得上传文件
MultipartFile file = multiRequest.getFile(iter.next());
if(file != null){
//取得当前上传文件的文件名称
String myFileName = file.getOriginalFilename();
//如果名称不为“”,说明该文件存在,否则说明该文件不存在
if(myFileName.trim() !=""){
System.out.println(myFileName);
//重命名上传后的文件名
String fileOriginalName = file.getOriginalFilename();
String newFileName=UUID.randomUUID()+fileOriginalName.substring(fileOriginalName.lastIndexOf("."));
String savedPath = request.getSession().getServletContext().getRealPath("/") + "uploadFiles/";//获取服务器指定文件存取路径
File saveDir = new File(savedPath);
if (!saveDir.exists()){
saveDir.mkdirs();
}
File savedFile = new File(savedPath,newFileName);
System.out.println(savedPath+"*********"+savedFile);
boolean isCreateSuccess = savedFile.createNewFile();
if(isCreateSuccess){
file.transferTo(savedFile); //转存文件
}
if (returnPath != null && returnPath != ""){
returnPath = returnPath +";"+ savedFile;
}else {
returnPath = returnPath + savedFile;
}
}
}
//记录上传该文件后的时间
int finaltime = (int) System.currentTimeMillis();
System.out.println(finaltime - pre);
}
return returnPath;
}
return "方法执行错误";
} 不好的地方就是前端页面每次点击添加一行时页面会刷新一下,先记录下来,下一步准备使用ajax+input的multiple="multiple"属性实现异步的多文件上传。
												

利用springMVC包装类上传多个文件的更多相关文章

  1. springMVC从上传的Excel文件中读取数据

    示例:导入客户文件(Excle文件) 一.编辑customer.xlsx 二.在spring的xml文件设置上传文件大小 <!-- 上传文件拦截,设置最大上传文件大小 10M=10*1024*1 ...

  2. SpringMVC 之 上传文件

    一.需求: 利用SpringMVC实现上传文件的功能 二.思路: 1.我们可以在SpringMVC中,通过配置一个MultipartResolver来上传文件. 2.通过MultipartFile f ...

  3. 利用SecureCRT上传、下载文件(使用sz与rz命令),超实用!

    利用SecureCRT上传.下载文件(使用sz与rz命令),超实用! 文章来源:http://blog.csdn.net/dongqinliuzi/article/details/39623169 借 ...

  4. SpringMVC进行文件的上传以及多文件的上传(转)

    基本的SpringMVC的搭建在我的上一篇文章里已经写过了,这篇文章主要说明一下如何使用SpringMVC进行表单上的文件上传以及多个文件同时上传的步骤 SpringMVC 基础教程 框架分析:htt ...

  5. 利用WebClient上传参数及文件流到远程ashx服务

    原文 利用WebClient上传参数及文件流到远程ashx服务 1 思路: WebClient.UploadFile()方法可以上传文件:UploadData()方法可以上传数据参数:如何合二为一既上 ...

  6. SpringMVC单文件上传、多文件上传、文件列表显示、文件下载(转)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 本文工程 ...

  7. springmvc和servlet在上传和下载文件(保持文件夹和存储数据库Blob两种方式)

    参与该项目的文件上传和下载.一旦struts2下完成,今天springmvc再来一遍.发现springmvc特别好包,基本上不具备的几行代码即可完成,下面的代码贴: FileUpAndDown.jsp ...

  8. 【SpringMVC】使用SpringMVC进行上传文件!

    写在前面: 之前在上传文件的时候,使用的是commons-file-upload这个插件,非常方便,能控制每个文件的大小,总共大小,缓存,以及支持多个文件的同时上传,但是写一次上传文件的后台代码量太大 ...

  9. Xshell5下利用sftp上传下载传输文件

    sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.sftp 与 ftp 有着几乎一样的语法和功能.SFTP 为 SSH ...

随机推荐

  1. linux processes identifiers

    Linux, like all Unix uses user and group identifiers to check for access rights to files and images ...

  2. 快速切题 acdream手速赛(6)A-C

    Sudoku Checker Time Limit: 2000/1000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) Submi ...

  3. 在 Ubuntu 14.04 Chrome中安装Flash Player(转)

    在 Ubuntu 14.04 中安装 Pepper Flash Player For Chromium  一个 Pepper Flash Player For Chromium 的安装器已经被 Ubu ...

  4. 【重大更新】DevExpress v17.2新版亮点—WinForms篇(二)

    用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.开篇介绍了DevExpress WinForms v17.2 Data Grid Control ...

  5. 单项目实现vendor分离编译,增加编译效率(vue-cli)

    1.在build文件夹下添加文件:webpack.dll.config.js const path = require('path') const webpack = require('webpack ...

  6. CSS3之border-image

    先上效果图,类似于IPHONE手机左上角的返回按钮样式,如果是在CSS2那么就要做一张背景图片扩展就没那么灵活了,CSS3内就不需要了,CSS3样式挺强大方便的. 源图片: 样式: .banner { ...

  7. [Scala]Scala学习笔记七 正则表达式

    1. Regex对象 我们可以使用scala.util.matching.Regex类使用正则表达式.要构造一个Regex对象,使用String类的r方法即可: val numPattern = &q ...

  8. CSS的使用

    1.行内样式/内联样式 特点:在具体的HTML标签中引入CSS代码 语法:所有的HTML标签都具有一个style属性,属性值就可以使用CSS样式规则 <标签 style="CSS样式规 ...

  9. MySQL主从数据库配置

    使用工具 MySQL数据版本:5.6.36-log. 两台云服务器(Linux系统) 首先,需要在Linux系统下安装MySQL,具体步骤可以参考这里,并且确保两台主机可以相互访问,可以直接ping一 ...

  10. WIN 10系统下,在DOS窗口输入Java或者javac出现乱码的解决方法

    昨天在WIN10系统下完成了Java环境的安装配置,配置完成后验证环境的时候出了一个小插曲—输入java后窗口内中文字符出现乱码,如下图. 在经过一番google之后,发现,原来是我cmd窗口的代码页 ...