如何在java的http头中将内容长度设置为long值? [英] How to set content length as long value in http header in java?

查看:455
本文介绍了如何在java的http头中将内容长度设置为long值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在用java编写一个web服务器,它正在传输高达2GB的文件。当我搜索原因时,我发现java HttpServelet只允许我们将内容长度设置为int。由于整数的最大大小为2GB,因此当我使用response.setContentLength方法时,它的工作正常可达2gb。现在的问题是默认的response.setContentLength有整数参数。所以它没有把长值作为参数。我已经尝试了
response.setHeader(Content-Length,Long.toString(f.length()));
response.addHeader(Content-Length,Long.toString(f.length()));
,但没有任何效果。总是在长值时无法添加内容长度。所以请为HTTPServletResponse提供任何有效的解决方案,以便我可以将内容长度设置为长值。

I am writing a web server in java that is transferring file upto 2GB fine. When I searched for the reason, I found like java HttpServelet only allows us to set the content length as int. As the maximum size of integer is 2GB, its working fine upto 2gb when I am using response.setContentLength method. Now the problem is bydefault response.setContentLength has the parameter of integer. So it is not taking long value as parameter. I have already tried response.setHeader("Content-Length", Long.toString(f.length())); response.addHeader("Content-Length", Long.toString(f.length())); but nothing is working. All time it is failing to add content length when it is a long value. So please give any working solution for HTTPServletResponse so that I can set the content length as long value.

推荐答案

您也可以在下面使用示例代码。

You can also use below sample code.

long length = fileObj.length();

if (length <= Integer.MAX_VALUE)
{
  response.setContentLength((int)length);
}
else
{
  response.addHeader("Content-Length", Long.toString(length));
}

这篇关于如何在java的http头中将内容长度设置为long值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆