表单提交明细上万,系统报错Form too large ,求大神指教。

11.png


评论区

JFinal

2019-10-10 11:45

这个是 web server 有限制,配置一下 web server,不同的 server 配置方式不同

2019-10-10 14:12

谢谢,波总,对于大数据表单保存,有没有好的思路,参考一下。我刚接触到这个框架。

JFinal

2019-10-10 15:12

在 undertow 之下的配置可能是下面这样的:
UndertowServer.create(MyAppConfig.class)
.onStart( builder -> {
builder.setServerOption(UndertowOptions.MAX_ENTITY_SIZE, 1024 * 1024 * 100);
})
.start();

上面的这种配置方式在文档中有过介绍:
https://www.jfinal.com/doc/1-4

tomcat、jetty 都有类似的配置,web server 默认会限定每次提交的数据量的大小,否则攻击者可以无限制提交极大的数据,从而可以大量占用 web server 资源,实现攻击的目的

山东小木

2019-10-10 15:13

大数据一般都是分片上传提交的

2019-10-10 15:25

@山东小木 详细说明一下吧,老师,前端和后台具体怎么分片实现。谢谢。

山东小木

2019-10-10 15:40

@中 先截个图发上来看看你什么表单 这么些数据 上传excel还是手写上万条啊

山东小木

2019-10-10 15:42

@中 一般就是要么服务器调整参数 接收更大的数据 要么就是拆分成多段小数据提交

山东小木

2019-10-10 15:44

@中 如果你是ajax提交的话 可以一百条提交一次这样 分段提交完所有的 大体思路

2019-10-10 15:57

@山东小木 我这是先查询出明细数据,然后编辑保存。以后数据可能还会增加,所以我考虑能实现分段保存比较好。

pobaby

2019-10-11 11:29

压缩加密传输是不是会更好一点。

hb963724769

2019-10-11 14:04

@中 你查出来的明细不可能每条都改了吧,只提交被修改过的数据就好了。

tianci121404

2019-10-12 15:04

@中 如果是编辑表格,可以改一条自动保存一条,没必要一起提交。

快乐的蹦豆子

2019-10-15 11:43

一部分完成了先ajax到后台 最后提交的时候把未上传的再提交,最后在后台合并起来出来

lusheng63

2019-10-16 15:20

你可以在form对象上添加enctype="multipart/form-data",将表单改为流来上传就不会出现问题了。不过在取参数之前记得getFiles(),在取上传的内容。