前端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. windows下python安装Numpy、Scipy、matplotlib模块

    来源http://blog.csdn.net/Katrina_ALi/article/details/64922107 http://blog.csdn.net/qq_16633405/article ...

  2. WEB-ERROR-PAGE

    首先需要在Web.xml文件中配置如下标签:     <error-page>        <error-code>404 </error-code>       ...

  3. James Whittaker:经营成功的测试职业生涯

    转注:这篇文章出自 James A. Whittaker,Google的工程总监,负责Google部分产品的测试,包括Chrome.地图.GoogleWebApp.在加盟Google之前,James在 ...

  4. Android系统移植与驱动开发

    21世纪,Android发展非常迅速,在市场上占有很大的比例,遥遥领先与iOS,很大程度上是因为任何人都可以利用Android的源代码定制完全属于自己的嵌入式开发系统,而不需要向Google交一分钱. ...

  5. MS14-021: Internet Explorer 安全更新: 2014 年 5 月 1 日

    微软推送全平台IE零日漏洞补丁 2014.05.2 3 Comments 207 views今天,微软正式发布IE安全补丁,修复4月底曝光的零日漏洞.用户可通过Windows Update自动更新服务 ...

  6. JAVA中int转string及String.valueOf()的使用

    日常java开放中,经常会遇到int和String的互转,一般图省事的做法就是: String length = ""+100; length的生成需要使用两个临时字符串" ...

  7. (转)git合并多个commit

    原文地址:http://platinhom.github.io/2016/01/02/git-combine_commit/ 有时commit多了看着会不爽.所以想合并掉一些commit. 这里是最简 ...

  8. anu - react

    import { options } from "./util"; import { Children } from "./Children"; import ...

  9. 解决Android adjustresize全屏无效问题

    最近在做一个即时通信的聊天页面时,页面要求要全屏显示,这个时候android:windowSoftInputMode = "adjustResize"属性就不起作用了,如果使用an ...

  10. Oracle Tuning (Oracle 性能调整)的一些总结

    Oracle Tuning (Oracle 性能调整)的一些总结 Oracle Tuning (Oracle 性能调整)的一些总结关于Oracle的性能调整,一般包括两个方面,一是指Oracle数据库 ...