我正在GWT中处理文件上传。我的测试应用工作正常。我想为gwtupload
创建的不同上传窗口小部件设置不同的文件上传限制。 (Project Home)
SingleUploader sUploader = new SingleUploader();
我使用以下代码在web.xml
中设置了上传限制。是否有任何选项可以在运行时设置不同的文件大小?
<context-param>
<!-- max size of the upload request -->
<param-name>maxSize</param-name>
<param-value>3145728</param-value>
</context-param>
答案 0 :(得分:1)
在gwtupload UploadServlet.java类中,您可以覆盖在请求传递给org.apache.commons.fileupload.servlet.ServletFileUpload之前调用的方法:
public void checkRequest(HttpServletRequest request) {
logger.debug("UPLOAD-SERVLET (" + request.getSession().getId() + ") procesing a request with size: " + getContentLength(request) + " bytes.");
if (getContentLength(request) > maxSize) {
throw new UploadSizeLimitException(maxSize, getContentLength(request));
}
}
如果您需要通过SingleUploader修改最大允许大小客户端,可以通过在隐藏表单字段中传递maxsize并在重写的checkRequest方法中检查它来完成此操作。然后将第二次检查web.xml中配置的大小,但是apache库是绝对最大大小。即你可以限制在一个数字/更低/更低但不高于。
我最终放弃了gwtupload,因为这样的事情和我自己的东西,使用apache fileupload库相当容易,而且更加灵活。
答案 1 :(得分:0)
只需覆盖以下内容即可。它对我有用,maxSize是超类中的受保护变量
@Override
public void init() throws ServletException {
maxSize = 157286400;
super.init();
}
@Override
public void checkRequest(HttpServletRequest request) {
maxSize = 157286400;
super.checkRequest(request);
}