【问题标题】:Unable to upload file larger than 10MB?无法上传大于 10MB 的文件?
【发布时间】:2017-07-03 09:11:10
【问题描述】:

这是我上传文件的代码:

@Override
public Representation post(Representation entity) {
    try {
        if (entity != null) {
            if (MediaType.MULTIPART_FORM_DATA.equals(entity.getMediaType(), true)) {
                DiskFileItemFactory factory = new DiskFileItemFactory();
                factory.setSizeThreshold(100000000);
                RestletFileUpload upload = new RestletFileUpload(factory);
                FileItemIterator fileIterator = upload.getItemIterator(entity);
                while (fileIterator.hasNext()) {
                    FileItemStream item = fileIterator.next();
                    String name = item.getName();
                    byte[] byteContent  = ByteStreams.toByteArray(item.openStream());
                    if(byteContent != null) {
                        String result = doSomethingWith(byteContent);
                        Representation response = new StringRepresentation(result);
                        response.setMediaType(MediaType.APPLICATION_JSON);
                        return response;
                    }
                }
            } else {
                return badRequest();
            }
        } else {
            return badRequest();
        }
    } catch (Exception e) {
        return internalError();
    }
    return null;
}

当部署在 Jetty (Java 8) 中时,它可以在文件大小大约低于 10MB,小文件(如 1-2 MB)时工作,当文件大(如 10MB+)时,上传随机失败,Reset 或码头?

【问题讨论】:

  • 我读过关于添加:ContextHandler.setMaxFormContentSize(int maxSize);对于 Jetty,但不确定如何将此配置与 Reslet 集成,或者即使它有效。
  • 处理上传的 servlet 的 servlet 规范多部分配置设置是什么?
  • 查看之前的回答:stackoverflow.com/q/19145489/775715

标签: java upload jetty restlet


【解决方案1】:

在服务器实例上设置一个属性以修改最大内容大小。 Jetty 限制数据量以阻止 DOS 攻击。您可以通过如下配置更改表单上传大小权限。 Link to documentation

<configure class="org.eclipse.jetty.server.Server">
      <Call name="setAttribute">
      <Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg>
      <Arg>200000</Arg>
    </Call>
</configure>

【讨论】:

    【解决方案2】:

    针对此问题的修复是更新 Jetty 前 NGINX 服务器的最大负载大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多