gwtupload:设置动态文件上传大小

时间:2013-09-27 10:43:19

标签: java gwt file-upload

我正在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>

2 个答案:

答案 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);
}