0

我有这段代码要下载一些文件,

URL url = new URL("the url");
URLConnection connection = url.openConnection();
connection.connect();
int fileLength = connection.getContentLength();

但 getContentLength 方法返回 -1 但该文件可在任何类型的 Internet 浏览器中下载。

这是关于 IIS 的 MIME 类型还是什么?

-------- 答案 ------------- 我已向 IIS 添加了一个 .map MIME 类型(与 zip 文件“application/x-zip-compressed”相同)。问题就解决了。

4

4 回答 4

1

它返回由响应头字段 content-length 指定的内容长度(以字节为单位),但如果未设置此字段,它将返回 -1。

您是否正在检查您是否已确定连接?

于 2013-09-16T11:56:25.020 回答
0

我已经向 IIS 添加了一个 .map MIME 类型(与 zip 文件“application/x-zip-compressed”相同)。问题就解决了。

于 2013-09-18T07:27:54.230 回答
0

检查其余的 http 标头,我猜该文件正在使用分块编码进行流式传输,这意味着将没有可用的内容长度。

我建议打开连接的输入流并从中读取,直到它在流结束时返回 -1

于 2013-09-16T11:56:44.177 回答
0

可能是因为服务器没有在响应头中设置内容长度

于 2013-09-16T12:04:31.340 回答