隐藏

springmvc文件上传下载简单实现案例(ssm框架使用)

发布:2021/7/22 15:34:09作者:管理员 来源:本站 浏览次数:1123

springmvc文件上传下载实现起来非常简单,此springmvc上传下载案例适合已经搭建好的ssm框架(spring+springmvc+mybatis)使用,ssm框架项目的搭建我相信你们已经搭建好了,这里不再赘述,下面就开始吧!

ssm框架整合详情请看:http://www.tpyyes.com/a/javaweb/2016/1103/23.html

1.首先我们创建一个测试用的jsp页面,代码如下。


[html]  view plain  copy
  1. <%@ page language="java" contentType="text/html; charset=utf-8"  
  2.     pageEncoding="utf-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">  
  7. <title>文件上传下载</title>  
  8. </head>  
  9. <body>  
  10.     <form action="http://localhost:8080/uploadDemo/rest/file/upload" method="post" enctype="multipart/form-data">  
  11.         选择文件:<input type="file" name="file" width="120px">  
  12.         <input type="submit" value="上传">  
  13.     </form>  
  14.     <hr>  
  15.     <form action="http://localhost:8080/uploadDemo/rest/file/down" method="get">  
  16.         <input type="submit" value="下载">  
  17.     </form>  
  18. </body>  
  19. </html>  
2.在我们的maven项目的pom.xml文件中添加fileupload文件上传下载jar包,不然后面的操作可能会报错,如下。


[html]  view plain  copy
  1. <!-- 文件上传 -->  
  2. <dependency>  
  3. <groupId>commons-fileupload</groupId>  
  4. <artifactId>commons-fileupload</artifactId>  
  5. <version>1.3</version>  
  6. </dependency>  
3.在spring的servlet视图解析器下面定义CommonsMultipartResolver文件解析器,就是加入这个的时候运行项目,如果没有fileuload相关的jar包就会报错。


[html]  view plain  copy
  1. <!-- 定义文件解释器 -->  
  2. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    
  3.     <!-- 设置默认编码 -->  
  4.     <property name="defaultEncoding" value="utf-8"></property>  
  5.     <!-- 上传图片最大大小5M-->   
  6.     <property name="maxUploadSize" value="5242440"></property>    
  7. </bean>  
4.在controller层写上springmvc上传下载的代码,如下。


[html]  view plain  copy
  1. package com.baidu;  
  2. @RequestMapping("file")  
  3. @Controller  
  4. public class FileController {  
  5.     /**  
  6.      * 文件上传功能  
  7.      * @param file  
  8.      * @return  
  9.      * @throws IOException   
  10.      */  
  11.     @RequestMapping(value="/upload",method=RequestMethod.POST)  
  12.     @ResponseBody  
  13.     public String upload(MultipartFile file,HttpServletRequest request) throws IOException{  
  14.         String path = request.getSession().getServletContext().getRealPath("upload");  
  15.         String fileName = file.getOriginalFilename();    
  16.         File dir = new File(path,fileName);          
  17.         if(!dir.exists()){  
  18.             dir.mkdirs();  
  19.         }  
  20.         //MultipartFile自带的解析方法  
  21.         file.transferTo(dir);  
  22.         return "ok!";  
  23.     }  
  24.       
  25.     /**  
  26.      * 文件下载功能  
  27.      * @param request  
  28.      * @param response  
  29.      * @throws Exception  
  30.      */  
  31.     @RequestMapping("/down")  
  32.     public void down(HttpServletRequest request,HttpServletResponse response) throws Exception{  
  33.         //模拟文件,myfile.txt为需要下载的文件  
  34.         String fileName = request.getSession().getServletContext().getRealPath("upload")+"/myfile.txt";  
  35.         //获取输入流  
  36.         InputStream bis = new BufferedInputStream(new FileInputStream(new File(fileName)));  
  37.         //假如以中文名下载的话  
  38.         String filename = "下载文件.txt";  
  39.         //转码,免得文件名中文乱码  
  40.         filename = URLEncoder.encode(filename,"UTF-8");  
  41.         //设置文件下载头  
  42.         response.addHeader("Content-Disposition", "attachment;filename=" + filename);    
  43.         //1.设置文件ContentType类型,这样设置,会自动判断下载文件类型    
  44.         response.setContentType("multipart/form-data");   
  45.         BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());  
  46.         int len = 0;  
  47.         while((len = bis.read()) != -1){  
  48.             out.write(len);  
  49.             out.flush();  
  50.         }  
  51.         out.close();  
  52.     }  
  53. }  
springmvc上传下载很方便,代码直接复制使用。