Spring MVC文件上传下载(转载)
原文地址:
http://www.cnblogs.com/WJ-163/p/6269409.html 上传参考
http://www.cnblogs.com/lonecloud/p/5990060.html 下载参考
一、关键步骤
①引入核心JAR文件
SpringMVC实现文件上传,需要再添加两个jar包。一个是文件上传的jar包,一个是其所依赖的IO包。这两个jar包,均在Spring支持库的org.apache.commons中。
②书写控制器方法
applicationContext.xml:
注:必须创建MultipartFile实例。要不出现500错误
index.jsp页面:需指定 enctype="multipart/form-data
1 2 3 4 5 6 7 |
<body> <form action="${pageContext.request.contextPath }/first.do" method="post" enctype="multipart/form-data"> <h2>文件上传</h2> 文件:<input type="file" name="uploadFile"/><br/><br/> <input type="submit" value="上传"/> </form> </body> |
实现效果:
二、没有选择要上传的文件&&限制文件上传类型
如果没有选择要上传的文件,可以通过如下判断代码回到错误页,并配置异常类
1 2 3 4 |
<!-- 配置异常类 报错 --> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="defaultErrorView" value="/error.jsp"></property> </bean> |
三、多文件上传
实现效果:
四、文件下载
1 |
<a href="${pageContext.request.contextPath }/download.do?line.jpg">下载</a> |
实现效果:
下载不采用这种方式,参考下面这段代码:
-
/**
-
* 文件下载
-
* @Description:
-
* @param fileName
-
* @param request
-
* @param response
-
* @return
-
*/
-
@RequestMapping("/download")
-
public String downloadFile(@RequestParam("fileName") String fileName,
-
HttpServletRequest request, HttpServletResponse response) {
-
if (fileName != null) {
-
String realPath = request.getServletContext().getRealPath(
-
"WEB-INF/File/");
-
File file = new File(realPath, fileName);
-
if (file.exists()) {
-
response.setContentType("application/force-download");// 设置强制下载不打开
-
response.addHeader("Content-Disposition",
-
"attachment;fileName=" + fileName);// 设置文件名
-
byte[] buffer = new byte[1024];
-
FileInputStream fis = null;
-
BufferedInputStream bis = null;
-
try {
-
fis = new FileInputStream(file);
-
bis = new BufferedInputStream(fis);
-
OutputStream os = response.getOutputStream();
-
int i = bis.read(buffer);
-
while (i != -1) {
-
os.write(buffer, 0, i);
-
i = bis.read(buffer);
-
}
-
} catch (Exception e) {
-
// TODO: handle exception
-
e.printStackTrace();
-
} finally {
-
if (bis != null) {
-
try {
-
bis.close();
-
} catch (IOException e) {
-
// TODO Auto-generated catch block
-
e.printStackTrace();
-
}
-
}
-
if (fis != null) {
-
try {
-
fis.close();
-
} catch (IOException e) {
-
// TODO Auto-generated catch block
-
e.printStackTrace();
-
}
-
}
-
}
-
}
-
}
-
return null;
-
}