此案例所示的方法为通用方法可支持文件上传,图片上传。
1.首先需要的jar如下:
1、commons-fileupload-1.2.2.jar
2、commons-io-2.0.1.jar
2.在spingmvc.xml里配置
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 上传文件大小上限,单位为字节(10MB) -->
<property name="maxUploadSize">
<value>10485760</value>
</property>
<!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 -->
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
</bean>
3.jsp页面
<form action="${contextPath}/apps/jianyi/uploadfile" enctype="multipart/form-data" method="post" id="loadForm">
<input type="file" name="file" id="file" ></input>
<button type="submit" id="loadFile">文件上传</button>
</form>
4.Controller代码:
public ModelAndView uploadfile(HttpServletRequest request,HttpServletResponse response){
try{
//创建一个通用的多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
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 fileName = file.getOriginalFilename();
// 定义上传路径
String path = "./Upload/" + fileName;
File localFile = new File(path);
file.transferTo(localFile);
}
}
// 记录上传该文件后的时间
// int finaltime = (int) System.currentTimeMillis();
// System.out.println(finaltime - pre);
}
}
ModelAndView mv = new ModelAndView();
mv.setViewName("uploadFrom");
return mv;
}catch(Exception e){
e.printStackTrace();
return null;
}
}