• springmvc-文件上传下载


    导入maven依赖

     1 <dependencies>
     2         <!--文件上传-->
     3         <dependency>
     4             <groupId>commons-fileupload</groupId>
     5             <artifactId>commons-fileupload</artifactId>
     6             <version>1.3.3</version>
     7         </dependency>
     8         <!--servlet-api 导入高版本-->
     9         <dependency>
    10             <groupId>javax.servlet</groupId>
    11             <artifactId>javax.servlet-api</artifactId>
    12             <version>4.0.1</version>
    13         </dependency>
    14     </dependencies>

    配置web.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
     5          version="4.0">
     6 
     7     <servlet>
     8         <servlet-name>DispatcherServlet</servlet-name>
     9         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    10         <init-param>
    11             <param-name>contextConfigLocation</param-name>
    12             <param-value>classpath:applicationContext.xml</param-value>
    13         </init-param>
    14         <load-on-startup>1</load-on-startup>
    15     </servlet>
    16 
    17     <servlet-mapping>
    18         <servlet-name>DispatcherServlet</servlet-name>
    19         <url-pattern>/</url-pattern>
    20     </servlet-mapping>
    21 
    22 
    23     <!--防止中文乱码-->
    24     <filter>
    25         <filter-name>encoding</filter-name>
    26         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    27         <init-param>
    28             <param-name>encoding</param-name>
    29             <param-value>UTF-8</param-value>
    30         </init-param>
    31     </filter>
    32     <filter-mapping>
    33         <filter-name>encoding</filter-name>
    34         <url-pattern>/*</url-pattern>
    35     </filter-mapping>
    36 </web-app>

    在src下的resources下建applicationContext.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4        xmlns:context="http://www.springframework.org/schema/context"
     5        xmlns:mvc="http://www.springframework.org/schema/mvc"
     6        xsi:schemaLocation="http://www.springframework.org/schema/beans
     7        http://www.springframework.org/schema/beans/spring-beans.xsd
     8        http://www.springframework.org/schema/context
     9        http://www.springframework.org/schema/context/spring-context.xsd
    10        http://www.springframework.org/schema/mvc
    11        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    12     <!--自动扫描包,下面注解类交给iod容器处理-->
    13     <context:component-scan base-package="com.rzk.controller"/>
    14     <!--静态资源过滤-->
    15     <mvc:default-servlet-handler/>
    16     <!--注解驱动-->
    17     <mvc:annotation-driven/>
    18     <!--JSON乱码问题配置-->
    19     <mvc:annotation-driven>
    20         <mvc:message-converters>
    21             <bean class="org.springframework.http.converter.StringHttpMessageConverter">
    22                 <constructor-arg value="UTF-8"/>
    23             </bean>
    24             <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
    25                 <property name="objectMapper">
    26                     <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
    27                         <property name="failOnEmptyBeans" value="false"/>
    28                     </bean>
    29                 </property>
    30             </bean>
    31         </mvc:message-converters>
    32     </mvc:annotation-driven>
    33 
    34 
    35     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    36         <property name="prefix" value="/WEB-INF/jsp/"/>
    37         <property name="suffix" value=".jsp"/>
    38     </bean>
    39 
    40     <!--文件上传配置-->
    41     <bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    42         <!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 -->
    43         <property name="defaultEncoding" value="utf-8"/>
    44         <!-- 上传文件大小上限,单位为字节(10485760=10M) -->
    45         <property name="maxUploadSize" value="10485760"/>
    46         <property name="maxInMemorySize" value="40960"/>
    47     </bean>
    48 
    49 </beans>

    新建上传页面

    1   <form action="${pageContext.request.contextPath}/file/upload" method="post" enctype="multipart/form-data">
    2       <input type="file" name="file">
    3     <input type="submit" value="upload">
    4   </form>

    controller

     1 @Controller
     2 @RequestMapping("/file")
     3 public class FileController {
     4     //@RequestParam("file") 将name=file控件得到的文件封装成CommonsMultipartFile 对象
     5     //批量上传CommonsMultipartFile则为数组即可
     6     @RequestMapping("/upload")
     7     public String fileUpload(@RequestParam("file") CommonsMultipartFile file , HttpServletRequest request) throws IOException {
     8 
     9         //获取文件名 : file.getOriginalFilename();
    10         String uploadFileName = file.getOriginalFilename();
    11 
    12         //如果文件名为空,直接回到首页!
    13         if ("".equals(uploadFileName)){
    14             return "redirect:/index.jsp";
    15         }
    16         System.out.println("上传文件名 : "+uploadFileName);
    17 
    18         //上传路径保存设置
    19         String path = request.getServletContext().getRealPath("/upload");
    20         //如果路径不存在,创建一个
    21         File realPath = new File(path);
    22         if (!realPath.exists()){
    23             realPath.mkdir();
    24         }
    25         System.out.println("上传文件保存地址:"+realPath);
    26 
    27         InputStream is = file.getInputStream(); //文件输入流
    28         OutputStream os = new FileOutputStream(new File(realPath,uploadFileName)); //文件输出流
    29 
    30         //读取写出
    31         int len=0;
    32         byte[] buffer = new byte[1024];
    33         while ((len=is.read(buffer))!=-1){
    34             os.write(buffer,0,len);
    35             os.flush();
    36         }
    37         os.close();
    38         is.close();
    39         return "redirect:/index.jsp";
    40     }
    41 }

    controller第二种上传方式

     1    @RequestMapping("/upload2")
     2     public String  fileUpload2(@RequestParam("file") CommonsMultipartFile file, HttpServletRequest request) throws IOException {
     3 
     4         //上传路径保存设置
     5         String path = request.getServletContext().getRealPath("/upload");
     6         File realPath = new File(path);
     7         if (!realPath.exists()){
     8             realPath.mkdir();
     9         }
    10         //上传文件地址
    11         System.out.println("上传文件保存地址:"+realPath);
    12 
    13         //通过CommonsMultipartFile的方法直接写文件(注意这个时候)
    14         file.transferTo(new File(realPath +"/"+ file.getOriginalFilename()));
    15 
    16         return "redirect:/index.jsp";
    17     }

    下载文件

     1     @RequestMapping(value="/download")
     2     public String downloads(HttpServletResponse response , HttpServletRequest request) throws Exception{
     3         //要下载的图片地址
     4         String  path = request.getServletContext().getRealPath("/upload");
     5         String  fileName = "1.jpg";
     6 
     7         //1、设置response 响应头
     8         response.reset(); //设置页面不缓存,清空buffer
     9         response.setCharacterEncoding("UTF-8"); //字符编码
    10         response.setContentType("multipart/form-data"); //二进制传输数据
    11         //设置响应头
    12         response.setHeader("Content-Disposition",
    13                 "attachment;fileName="+ URLEncoder.encode(fileName, "UTF-8"));
    14 
    15         File file = new File(path,fileName);
    16         //2、 读取文件--输入流
    17         InputStream input=new FileInputStream(file);
    18         //3、 写出文件--输出流
    19         OutputStream out = response.getOutputStream();
    20 
    21         byte[] buff =new byte[1024];
    22         int index=0;
    23         //4、执行 写出操作
    24         while((index= input.read(buff))!= -1){
    25             out.write(buff, 0, index);
    26             out.flush();
    27         }
    28         out.close();
    29         input.close();
    30         return "ok";
    31     }

    链接

     1 <a href="/file/download">下载</a> 

    下载图片只需要改一下第5行代码就可以了

  • 相关阅读:
    day18:json模块&time模块&zipfile模块
    Color Changing Sofa Gym
    Gym
    Gym
    Java的awt包的使用实例和Java的一些提示框
    分组背包 例题:hdu 1712 ACboy needs your help
    UVA1401 Remember the Word 字典树维护dp
    CodeForces833 B. The Bakery 线段树维护dp
    hdu4719 Oh My Holy FFF 线段树维护dp
    Little Difference Gym
  • 原文地址:https://www.cnblogs.com/rzkwz/p/12820112.html
Copyright © 2020-2023  润新知