Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法上载大于10MB的文件?_Java_Upload_Jetty_Restlet - Fatal编程技术网

Java 无法上载大于10MB的文件?

Java 无法上载大于10MB的文件?,java,upload,jetty,restlet,Java,Upload,Jetty,Restlet,这是我上传文件的代码: @Override public Representation post(Representation entity) { try { if (entity != null) { if (MediaType.MULTIPART_FORM_DATA.equals(entity.getMediaType(), true)) { DiskFileItemFactory factory = new D

这是我上传文件的代码:

@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-2MB)时,当文件较大(如10MB)时,上载会随机失败,Restet或Jetty会有什么问题

在服务器实例上设置属性以修改最大内容大小。Jetty限制数据量以阻止DOS攻击。您可以使用以下配置更改表单上载大小权限


org.eclipse.jetty.server.Request.maxFormContentSize
200000

解决此问题的方法是更新Jetty前面的NGINX服务器的最大有效负载大小。

我已经阅读了添加:ContextHandler.setMaxFormContentSize(int-maxSize);适用于Jetty,但不确定如何将此配置与Reslet集成,甚至不确定它是否有效。处理该上载的servlet的servlet规范多部分配置设置是什么?请参阅前面的答案:
<configure class="org.eclipse.jetty.server.Server">
      <Call name="setAttribute">
      <Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg>
      <Arg>200000</Arg>
    </Call>
</configure>