【问题标题】:request.getContentLength() return 0 when file size is greater than 2gb当文件大小大于 2gb 时 request.getContentLength() 返回 0
【发布时间】:2016-01-12 10:39:59
【问题描述】:

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

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

但是 request.getContentLength() 方法对于小于 2 gb 的值返回正确的值,对于高于它的任何值返回 0。

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

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

【问题讨论】:

  • 您使用的是 x32 还是 x64 ?
  • 你试过从标题中获取吗?
  • @joaumg 我们正在使用 x64
  • 设置?你说的是得到它,而不是设置。见stackoverflow.com/q/11466905/1700321
  • 您如何看待上传文件取决于内容长度?

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


【解决方案1】:

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

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

【讨论】:

  • 感谢支持,我们正在使用 servlet api 3.0 和 tomcat 7,并且对于大于 2gb 的文件大小不会生成请求
猜你喜欢
  • 2013-10-19
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多