SSM处理文件上传大小超出限制问题

在做博客系统的修改个人信息的功能的时候, 需要做修改用户头像的功能. 这时候需要用到SpringMVC的文件上传功能.

SpringMVC使文件上传成为WEB应用程序开发人员的一项非常简单的工作. SpringMVC的jar库提供CommonsMultipartResolver类, 特别关注使用多部分/表单数据(multipart/form-data)编码类型提交的表单. 我们还可以在这个解析器中指定最大文件大小.


第一步: 在spring-mvc.xml文件中注册文件上传解析器

为了能够让Spring能够处理多部件的表单, 我们首先需要在SpringMVC的配置文件中注册文件上传解析器.

<!--配置文件上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="4097152"/>
</bean>

其中maxUploadSize的值为上传文件的最大大小(单位为字节). 当上传的文件超出指定的值时, 就会抛出FileUploadBase$SizeLimitExceededException异常. 我们需要做的就是处理这种类型的异常.


第二步: 创建文件上传的表单

创建文件上传表单需要指定form的entry属性为multipart/form-data

<form class="form-horizontal" id="infoForm" method="post" enctype="multipart/form-data">
...
</form>

 第三步: 创建文件上传的Controller

@PostMapping("updateInfo")
@ResponseBody
public String updateInfo(HttpSession session, User user, MultipartFile imgFile, HttpServletRequest request, HttpServletResponse response) {
    response.setContentType("application/json; charset=utf-8");
    User loginUser = (User) session.getAttribute("_USER_MODEL");
    String avatar = "";
    if (imgFile != null) {
        avatar = FileUploadUtil.uploadAvatar(request, imgFile);
    }
    ...
        
}

完成以上几步就能够实现基本的文件上传功能. 但是当文件的大小超出限制的时候, 就需要做一些额外的操作.


第一步: 实现HandlerExceptionResolver接口

@Controller
@RequestMapping("/home")
public class HomeController implements HandlerExceptionResolver {
    ...
}

第二步: 实现HandlerExceptionResolver接口中的方法

@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
    ModelAndView modelAndView = new ModelAndView();
    HashMap<Object, Object> map = new HashMap<>();
    response.setContentType("application/json; charset=utf-8");
    if (ex instanceof MaxUploadSizeExceededException) {
        map.put("success", false);
        map.put("message", "文件大小超出限制");
        logger.debug(map);
        try {
            response.getWriter().write(ObjectToJsonUtil.mapToJSON(map));
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else {
        ex.printStackTrace();
    }
    return modelAndView;
}

 


以上, 当上传的头像文件超出限制的时候, 弹窗提醒文件大小超出限制.


参考:

使用Spring MVC和注释配置来实现文件上传 - jQuery插件 - 其它 - 深度开源

最后分享一张图片, 嘿嘿嘿

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值