文件上传大小配置为
1024*1024*1024*5=5,368,709,120(5GB)
但int最大为
2,147,483,648(2GB)
于是,把文件大小限制为
1GB或Integer.MAX_VALUE
然而,问题也没解决。
大于Interger.MAX_VALUE的文件可以正常上传,大于1GB小于Interger.MAX_VALUE的会失败。
于是顺着代码跟到这
@Override public int getContentLength() { long length = getContentLengthLong(); if(length > Integer.MAX_VALUE) { return -1; } return (int)length; }
可以看到,如果文件长度大于Int的最大值,就返回-1,我上传的文件大于这个值的所以就返回了-1。是不是一开始使用的是int,然后突然发现是坑,所以将计就计了,强转成int?