在Spring的环境中,如何限制上传文件的文件大小

来源:互联网 发布:淘宝详情页面整张复制 编辑:程序博客网 时间:2024/06/06 13:09
在开发中,经常地会有上传文件,文件超过限制大小的情况,对于这类的异常,我是这么处理的。
在原来的系统的spring的配置文件中,有一个参数文件是用来配置上传文件时的文件大小的
<context:property-placeholder location="classpath:fileupload.properties" />

参数文件中的内容是:
maxUploadSize=104857600

可以从配置文件中读取配置的上传文件时的文件限制大小
在系统中有一个继承AbstractHandlerExceptionResolver的系统异常处理类
在这个 SystemExceptionResolver 类中
import java.io.IOException;import java.io.PrintWriter;import java.util.Date;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.stereotype.Controller;import org.springframework.web.multipart.MaxUploadSizeExceededException;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver;public class SystemExceptionResolver extends AbstractHandlerExceptionResolver {    protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {      if (ex instanceof MaxUploadSizeExceededException) {         long fileSize = ((MaxUploadSizeExceededException) ex).getMaxUploadSize();         String error = "文件超过限制大小,最大限制为".concat(fileSize /(1024 * 1024)).concat("M");         String message = "{\"functionArea\":\"fileUpload\",\"message\":\"".concat(error).concat("\"}");         response.setContentType("text/html;charset=UTF-8");         setResponse(response, -1, message);      }   }}     /**     * 设置返回的Response信息     *     * @param response     * @param errorCode     * @param errorMsg     */    private void setResponse(HttpServletResponse response, int errorCode,             String errorMsg)     {        if (-1 != errorCode)            response.setStatus(errorCode);        if (errorMsg != null)            printJSON(response, errorMsg);    }    /**     * 设置Response 的 responseText值     *     * @param response     * @param errorMsg     */    private void printJSON(HttpServletResponse response, String errorMsg) {        response.setCharacterEncoding("UTF-8");        try {            PrintWriter out = response.getWriter();            out.println(errorMsg);            out.flush();            out.close();        } catch (IOException e) {            e.printStackTrace();        }    }}

我在这个原来作者的异常处理类中,增加了一个条件的处理,即
if (ex instanceof MaxUploadSizeExceededException) {}
通过调用MaxUploadSizeExceededException的方法getMaxUploadSize()
long fileSize = ((MaxUploadSizeExceededException) ex).getMaxUploadSize();
得到上传文件的最大限制,然后拼接返回至前台页面的消息字符串,然后返回拼接好的字符串
0 0
原创粉丝点击