request.getContentLength()在文件大小大于2gb时返回0

时间:2016-01-12 10:40:00

标签: servlets file-upload struts2 content-length http-content-length

在我的项目中使用文件上传:

 <s:form id="uploadData" action="UploadAction" namespace="xyz"   validateFields="false" method="post"    enctype="multipart/form-data">

但是request.getContentLength()方法返回小于2 gb的正确值和0以上的任何值。

可能的原因是 content-length的数据类型为int。有没有其他方法可以将请求参数:content-length转换为long类型 为了支持大于2GB的上传。

请指导我们如何将内容长度请求标头转换为long以支持大于2gb的文件上传

1 个答案:

答案 0 :(得分:1)

这是因为Servlet API中的getContentLength()方法定义为int。实际上,对于大于2gb的文件(请求),它应该返回-1

如果您正在使用Servlet API 3.1(例如Tomcat 8),则可以使用getContentLengthLong()方法。