今天小李正在平淡又辛苦的搬砖,好不容易搬完了今天的砖,却在测试时发现,文件上传接口出现了问题,后台没有报异常,就是有些图片上传不上,刚开始我以为是图片不正经的问题,如下图,都是一些网上随便找的图片,一部分能传上,一部分一直报错。
后端不报错,于是我开始找前端(对于我这种小白来说,系统不报错,我可能一个bug就能找到头秃),F12检查网页后,发现前端有错误信息,提示文件太大,这下终于找到源头了,接下来就好解决了(其实是可以百度了),错误如图
图中提示,翻译过来就是请求实体太大,这下就知道是配置文件的问题了,开始配置,在上传接口模块的resources下的bootstrap.yml配置文件中添加如下配置
spring:
servlet:
multipart:
max-file-size: 30MB #单个文件大小
max-request-size: 100MB #最大请求文件的大小
然后测试,还是不行,然后开始抓头,百度后,又在bootstrap.yml中添加了置tomcat的配置,如下,-1即为不限制大小
server:
tomcat:
max-swallow-size: -1
然后测试,发现还是老样,但是夜已深,实在是撸代码太累,撸不动了,于是往大佬群里发了下错误问题,直接睡觉(此乃解决bug的最好方法),第二天一醒,发现有一位大佬说了下可能是nginx的配置问题,然后根据指导(复制粘贴)在nginx配置文件nginx.conf中添加配置
如下图
对于我一个新手,我才想起来项目中用了nginx,项目中都是通过nginx的反向代理功能访问后台的网关资源。
总结:根据本小白自己的理解,就是项目用了nginx做反向代理后,所有的请求都得先经过nginx代理服务器,而此时nginx默认的上传文件大小只有1M,所以在上传文件大于1M时,在nginx代理这一关请求就已经属于异常了,请求直接异常中断,导致文件一直传不上。最终磕磕绊绊也算是改完了一个bug,入行不到五个月啊,我这头发哗哗的掉啊,代码使我疯狂,更使我头秃,不过学习仍要继续,毕竟java是要从入门到入土的。
最后, 祝大家头秃的比我快,比我更早领悟到传说中的境界——聪明绝顶!