當(dāng)看到這文章的時(shí)候相信你現(xiàn)在應(yīng)該遇到這樣的問(wèn)題了,我也是自己遇到了后來(lái)找到解決方案了記錄下來(lái),如果下次遇到就可以直接解決了。
至于為什么會(huì)出現(xiàn)這樣的情況,可以看這篇文章:https://bz.apache.org/bugzilla/show_bug.cgi?id=57438
這些一個(gè)tomcat bug,但不知道什么版本解決了這個(gè)問(wèn)題。所以下面用了另外一個(gè)方法搞定它。
<!-- 多部分文件上傳 --> <bean id="mult首先,把maxUploadSize 設(shè)置大一點(diǎn),讓它不會(huì)拋異常出來(lái)。
然后創(chuàng)建一個(gè)攔截器控制上傳大小,然后拋出同樣的異常出來(lái),或者也可以直接在攔截器中處理異常
public class FileUploadInterceptor implements HandlerInterceptor { private long maxSize; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if(request!=null && ServletFileUpload.isMultipartContent(request)) { ServletRequestContext ctx = new ServletRequestContext(request); long requestSize = ctx.contentLength(); if (requestSize > maxSize) { throw new MaxUploadSizeExceededException(maxSize); } } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } public void setMaxSize(long maxSize) { this.maxSize = maxSize; }}然后在xml中配置
<mvc:interceptor> <mvc:mapping path="/**"/> <bean class="com.lvrounet.peiniang.interceptor.FileUploadInterceptor"> <property name="maxSize" value="4194304"/> </bean> </mvc:interceptor>攔截器中可以根據(jù)需求配置上傳的大小了。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注