最近项目中,做了一个支持上传文件的后台提交功能,开发过程中遇到了以下几个问题,整理并给出具体的解决思路
1)表单重复提交
2)form表单异步提交
3)批量数据写入,事务回滚
4)SpringBoot默认接收文件流大小
问题1
1、利用JavaScript防止表单重复提交,通过添加js脚本,让用户无法进行多次有效点击
2、表单提交之后,将提交按钮设置为不可用,让用户没有机会点击第二次提交按钮
3、利用Session防止表单重复提交,通过session创建token属性,判断用户是否重复提交
4、在分布式环境中,多台服务可能同时存在,由于路由的问题,通过session防止表单重复提交,不能彻底解决问题,此时可以通过关联操作用户信息和token,创建共享token属性,放入到缓存服务中。
问题2
问题3
1、通过Spring声明式事务管理机制
问题4
Spring Boot 默认最大request size 为1MB(1048576 bytes)。
需要设置以下两个参数
Spring Boot 1.3.x或者之前
multipart.maxFileSize=100Mb
multipart.maxRequestSize=1000Mb
Spring Boot 1.4.x或者之后
spring.http.multipart.maxFileSize=100Mb
spring.http.multipart.maxRequestSize=1000Mb