我需要有关在angularjs中使用Ajax将大型JSON对象发布到服务器的帮助。当我使用发布请求在ArrayList
中发送带有大约10000条记录的JSON对象时,它被接受并且得到相同的响应。但是当我上传30000条或更多记录并尝试使用ajax发送时,它返回以下错误:-
[io.undertow.request] (default task-5) UT005007: Request was not fully consumed
我该如何解决?
我正在使用Wildfly 10和Java8。是否可以增加任何帖子大小参数?
答案 0 :(得分:1)
您似乎正在使用Undertow来接收POST请求。检查设置中MAX_ENTITY_SIZE
选项的值是什么,也许它受到限制:
请求实体的默认最大大小。如果实体主体大于此限制,则在读取请求时(在固定长度请求的第一次读取中,对于分块请求读取的数据太多时)将在某个点抛出
java.io.IOException
。该值仅是默认大小,处理程序可以通过调用io.undertow.server.HttpServerExchange.setMaxEntitySize(long size)
来为单个请求覆盖此大小。默认为无限制。
根据this thread中的建议,这可能是在Spring中使用MultipartConfigFactory
bean进行配置的:
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setMaxFileSize("100MB");
factory.setMaxRequestSize("100MB");
return factory.createMultipartConfig();
}
答案 1 :(得分:0)
@KarolDowbecki提出的建议可能会起作用,但是还有另一种方法。在您使用的standalone.xml
文件中,您可以更改:
<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>
收件人:
<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true" max-post-size="16777216"/>
在这种情况下增加到16MB。至少在Wildfly 16上默认为10MB。
或者,如果您要对此编写脚本,从而不必手动修改standalone.xml
,则可以使用jboss-cli并运行:
/subsystem=undertow/server=default-server/http-listener=default/:write-attribute(name=max-post-size,value=16777216)