1

我正在解决 GWT 中的文件上传问题。我的测试应用程序工作正常。我想为创建的不同上传小部件设置不同的文件上传限制gwtupload。(项目首页)

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>
4

2 回答 2

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 库相当容易,而且更灵活。

于 2013-09-27T15:32:19.893 回答
0

只需覆盖以下内容。它对我有用,maxSize 是超类中的受保护变量

@Override
public void init() throws ServletException {
    maxSize = 157286400;
    super.init();
}

@Override
public void checkRequest(HttpServletRequest request) {
    maxSize = 157286400;
    super.checkRequest(request);
}
于 2014-10-23T11:59:27.750 回答