为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Boot怎么处理上传文件时出现的MultipartException

Spring Boot怎么处理上传文件时出现的MultipartException

ITMISS 2019-03-14 11:15:43
在config中配置了文件的大小@Configurationpublic class CommonConfig {    @Bean    public MultipartConfigElement multipartConfigElement() {        MultipartConfigFactory factory = new MultipartConfigFactory();        factory.setMaxFileSize(1024L * 1024L);        return factory.createMultipartConfig();    }}当文件的大小超出设置值时,返回500错误org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.    at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:111)    at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.<init>(StandardMultipartHttpServletRequest.java:85)    at org.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:76)    at org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1091)    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:930)    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895)    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)需要怎么做才能返回200的友好提示?
查看完整描述

3 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

拦截这个异常:


@ControllerAdvice

public class ExceptionProcess {

    // 对这个异常的统一处理,返回值 和Controller的返回规则一样

    @ExceptionHandler(MultipartException.class)

    public String handleAll(Throwable t){

        // TODO do sth

        return "view";

    }

}


查看完整回答
反对 回复 2019-04-23
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

楼主最后是怎么解决的?我知道这个问题是设置了限制大小之后file穿不过去controller,在表单传过去的时候就被拦截抛异常了,我尝试过2楼的方法拦截了这个异常统一处理,但是控制台将这个异常处理了两次,不明白问题在哪。求助!!

源码:

Controller:

@RequestMapping(value = "/upload",method = RequestMethod.POST)


@ResponseBody

public String upload(@RequestParam("test") MultipartFile file) {

    String result = fs.upload(file);

    return result;

}

Service:

@Service

public class fileServiceImp implements fileService {


@Override

public String upload(MultipartFile file) {

    //判断文件是否为空

    if (file.isEmpty()) { return "文件为空"; }

    // 获取文件名

    String fileName = file.getOriginalFilename();

    // 获取文件的后缀名

    String suffixName = fileName.substring(fileName.lastIndexOf("."));

    //获取文件类型

    String filetype = file.getContentType();

    //获取文件大小

    long size = file.getSize();

    // 文件上传后的路径

    String filePath = "/Users/ho/Documents/CMS/src/main/resources/file_temp/";

    // 解决中文问题,liunx下中文路径,图片显示问题

    fileName = UUID.randomUUID() + suffixName;

    File dest = new File(filePath + fileName);

    // 检测是否存在目录

    if (!dest.getParentFile().exists()) {

        dest.getParentFile().mkdirs();

    }

    try {

        //上传

        file.transferTo(dest);

        //获取当前时间

        Date d = new Date();

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        String today = sdf.format(d);

        //上传后输出上传成功的时间

        return today + "-" + fileName + "-" + "上传成功";

    }catch (IllegalStateException e) {

        return "文件过大,内存溢出异常";

    }catch (IOException e) {

        return "文件路径错误,IO异常";

    }

}


查看完整回答
反对 回复 2019-04-23
  • 3 回答
  • 0 关注
  • 8252 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号