我正在使用servlet 3 api在tomcat 7中上传文件。
我在web.xml中设置。
我如何在我的Java代码中访问max-file-size的值,所以我可以告诉用户最大文件大小是多少?
我已经遍历Servlet,ServletContext,ServletConfig,ServletRegistration的API,找不到任何东西。 multipart-config值不在initParameters中。
我认为另一种询问方式是,如何获得Servlet的MultipartConfigElement对象?同样,在浏览了api之后,我找不到任何检索此方法的方法。
最佳答案
我发现了一种可以做我想做的方法,尽管它使用反射来获取servlet配置的私有的,未记录的部分,所以远非理想-无法保证它将继续在tomcat升级中工作。但是在servlet中,以下代码将获得MultipartConfigElement(它具有返回配置的各个位的方法):
ServletConfig scfig = getServletConfig();
MultipartConfigElement mce = null;
try {
Field config = scfig.getClass().getDeclaredField("config");
config.setAccessible(true);
mce = ((StandardWrapper)config.get(scfig)).getMultipartConfigElement();
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}