最近在Android上用HTTP下载文件,使用HttpURLConnection创建连接,但是在获取文件大小的时候
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
long contentlength = conn.getContentLength();
contentlength在下载小文件比如几十兆的文件时,得到了正常值,但是在下载大文件比如2G文件时,得到的是-1,请高手解答下
大于2G估计服务器压缩传输了
设置conn .setRequestProperty("Accept-Encoding", "identity"); 试试
抓包看一下吧
估计小文件的大小是在头里的长度字段有值,所以能获取到
大文件的时候,长度字段没有了,而是使用了trunk的方式传输,这样就没办法直接获取到了,需要根据trunk信息进行统计
文件还可能是用的chunk方式传输的,它是按块传递的数据,对于大文件一般很难预测大小,都会这么传输
http://www.cnblogs.com/huangfox/archive/2012/03/31/2426346.html
哦哦 我在遇到了,纠结了半天 好人呐
不用用int,用long即可解决问题