まずは、applicationContext.xmlに下記を追加する。
applicationContext.xml
<!-- enable file upload -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- the maximum file size in bytes -->
<property name="maxUploadSize" value="104857600"/>
</bean>
しかし、これだけだとHTTP Status 500の「org.springframework.web.multipart.MaxUploadSizeExceededException」が発生するので、Handlerメソッドを追加してあげる必要がある。
GlobalExceptionHandler.java
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
@Component
public class GlobalExceptionHandler implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest req, HttpServletResponse resp, Object obj, Exception e)
throws MaxUploadSizeExceededException {
Map<String, Object> model = new HashMap<>();
if (e instanceof MaxUploadSizeExceededException) {
model.put("errorMsg", "Maximum upload file size is up to 100MB");
}
return new ModelAndView("/upload", model);
}
}
別クラスに分けたくない場合、Uploaderのクラス内でHandlerExceptionResolverをimplementして、resolveExceptionをOverrideする方法でも可。
参照How to handle MaxUploadSizeExceededException - Stack Overflow
※ただし、上記URLではresolveExceptionメソッドに@Overrideをつけ忘れているため、そのままでは動作しない。