ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring MVC学习08--文件上传

2021-10-27 06:33:00  阅读:128  来源: 互联网

标签:-- Spring 08 springframework javax import org servlet public


在POM文件中添加文件处理和文件上传的依赖

<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.3</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>jstl</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

 

编写Controller:

 1 package com.yas.controller;
 2 
 3 import org.apache.commons.io.FilenameUtils;
 4 import org.springframework.stereotype.Controller;
 5 import org.springframework.web.bind.annotation.RequestMapping;
 6 import org.springframework.web.multipart.MultipartFile;
 7 
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10 import javax.servlet.http.HttpSession;
11 import java.io.File;
12 import java.io.IOException;
13 import java.util.UUID;
14 
15 @Controller
16 @RequestMapping("/upload")
17 public class UploadController {
18 
19     @RequestMapping("/test1")
20     public String test1(MultipartFile source, HttpSession session, HttpServletRequest request, HttpServletResponse response) throws IOException {
21         //获取文件信息
22         String filename = source.getOriginalFilename();
23         String contentType = source.getContentType();
24         System.out.println(filename);
25         System.out.println(contentType);
26 
27         String uniqueFilename = UUID.randomUUID().toString();
28         String ext = FilenameUtils.getExtension(filename);
29 
30         //保存文件
31         String realPath = session.getServletContext().getRealPath("/upload");
32         source.transferTo(new File(realPath+"\\"+uniqueFilename+"."+ext));
33         return "hello";
34 
35     }
36 }

 

编写自定义拦截器:

 1 package com.yas.interceptor;
 2 
 3 import org.apache.commons.fileupload.servlet.ServletRequestContext;
 4 import org.springframework.web.multipart.MaxUploadSizeExceededException;
 5 import org.springframework.web.servlet.HandlerInterceptor;
 6 
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 
10 public class MyFileUploadInterceptor implements HandlerInterceptor {
11     private Long maxFileuploadSize;
12 
13     public Long getMaxFileuploadSize() {
14         return maxFileuploadSize;
15     }
16 
17     public void setMaxFileuploadSize(Long maxFileuploadSize) {
18         this.maxFileuploadSize = maxFileuploadSize;
19     }
20 
21     @Override
22     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
23         //
24         ServletRequestContext serverRequestConext = new ServletRequestContext(request);
25         long l = serverRequestConext.contentLength();
26         if (l > maxFileuploadSize) {
27             throw new MaxUploadSizeExceededException(maxFileuploadSize);
28         }
29         return true;
30     }
31 }

 

修改异常解析器:

 1 package com.yas.resolver;
 2 
 3 import com.yas.ex.MyException1;
 4 import com.yas.ex.MyException2;
 5 import com.yas.ex.MyException3;
 6 import org.springframework.web.multipart.MaxUploadSizeExceededException;
 7 import org.springframework.web.servlet.HandlerExceptionResolver;
 8 import org.springframework.web.servlet.ModelAndView;
 9 
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 
13 //异常解析器
14 //任何一个hanlder中抛出异常时
15 public class MyExeceptionResolver implements HandlerExceptionResolver {
16     @Override
17     public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
18         ModelAndView modelAndView = new ModelAndView();
19         if(e instanceof MyException1){
20             modelAndView.setViewName("error1");
21         }else if(e instanceof MyException2){
22             modelAndView.setViewName("error2");
23         }else if (e instanceof MyException3){
24             modelAndView.setViewName("error3");
25         }else if(e instanceof MaxUploadSizeExceededException){
26             modelAndView.setViewName("uploaderror");
27         }
28         return modelAndView;
29     }
30 }

 

在mvc.xml中进行配置:

    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/upload/test1"></mvc:mapping>
            <bean class="com.yas.interceptor.MyFileUploadInterceptor">
                <property name="maxFileuploadSize" value="1048576"></property>
            </bean>
        </mvc:interceptor>
    </mvc:interceptors>

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!-- 在tomcat 8中,此属性设置无效-->
            <!-- <property name="maxUploadSize" value="1048576"></property>-->
    </bean>

 

编写上传测试页面和错误提示页面:

upload.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="${pageContext.request.contextPath}/upload/test1" method="post" enctype="multipart/form-data">
        <input type="file" name="source"><br>
        <input type="submit" value="上传">
    </form>
</body>
</html>

 

uploaderror.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    文件上传失败
</body>
</html>

 

标签:--,Spring,08,springframework,javax,import,org,servlet,public
来源: https://www.cnblogs.com/asenyang/p/15468774.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有