【发布时间】:2012-07-13 02:13:43
【问题描述】:
我正在用 java 编写一个 Web 服务器,它可以传输高达 2GB 的文件。当我搜索原因时,我发现像 java HttpServelet 只允许我们将内容长度设置为 int。由于整数的最大大小为 2GB,当我使用 response.setContentLength 方法时,它的工作正常可达 2GB。现在问题是默认情况下 response.setContentLength 具有整数参数。所以它不以长值作为参数。我已经试过了 response.setHeader("内容长度", Long.toString(f.length())); response.addHeader("内容长度", Long.toString(f.length())); 但没有任何工作。当它是一个长值时,它总是无法添加内容长度。所以请给 HTTPServletResponse 任何可行的解决方案,以便我可以将内容长度设置为长值。
【问题讨论】:
-
您可能不应该通过 servlet 发送这么大的文件。您是否尝试过不设置
Content-Length并使用Chunked transfer encoding 发送文件? -
其他人尝试过:bugs.sun.com/bugdatabase/view_bug.do?bug_id=4187336 Servlet API 不允许这样做。您是否尝试过在没有 Content-Length 的情况下发送它?
标签: java