今天用spring mvc 做了文件上传,和excel 文件解析,这里先记录一下文件上传的代码,
1、首先是控制器里面的写法:
@RequestMapping(value="/readExcel.do")
@ResponseBody
public ModelAndView readExcel(HttpServletRequest request,HttpServletResponse response)
throws Exception{
ModelAndView mv = new ModelAndView();
try {
System.out.println("解析excel 方法开始。。。。。");
//根目录
String temp = request.getSession().getServletContext().getRealPath("/");
//文件上传的路径
String path = "";
//创建一个通用的多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
//判断 request 是否有文件上传,即多部分请求
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(null != file && 0 != file.getSize()){
//取得当前上传文件的文件名称
String myFileName = file.getOriginalFilename();
//如果名称不为“”,说明该文件存在,否则说明该文件不存在
if(myFileName.trim() !=""){
System.out.println(myFileName);
//重命名上传后的文件名
String fileName = System.currentTimeMillis() + file.getOriginalFilename();
//定义上传路径
path = temp + fileName;
File localFile = new File(path);
file.transferTo(localFile);
}
}
//记录上传该文件后的时间
int finaltime = (int) System.currentTimeMillis();
System.out.println(finaltime - pre);
}
}
} catch (Exception e) {
System.out.println("解析excel 方法错误。。。。。");
e.printStackTrace();
}
System.out.println("解析excel 方法结束。。。。。");
return mv;
}
2、然后我们需要在spring-mvc.xml (每个项目中spring 的核心配置文件不一样,大家根据自己的项目来进行修改)文件中增加以下配置
<!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 默认编码 -->
<property name="defaultEncoding" value="utf-8" />
<!-- 文件大小最大值 -->
<property name="maxUploadSize" value="10485760000" />
<!-- 内存中的最大值 -->
<property name="maxInMemorySize" value="40960" />
</bean>
3、在修改完后,然后在我们的页面上面调用这个方法就行了,下面做一个实例:
<form id="mysign" class="mysign" enctype="multipart/form-data" method="post" action="readExcel.do" >
<ul>
<li class="hra">附件</li>
<li><input type="file" name="file" /></li>
<div class="clear"></div>
</ul>
<div class="but_h2" style="padding-top:10px"><input type="submit" value="提交" /></div>
</form>