我使用Apache-Commons并下载文件内容。一切都很完美,但我想添加一个进度指示器,我需要传入文件的内容长度。
在我的调试器中,我可以看到我的InputStream
标记了一个对象'类型ContentLengthInputStream
的类型,其中一个对象的属性实际上是文件的长度!但是,我没有看到在我的代码中获取该对象的方法。 InputStream没有那么多的方法,也没有任何方法得到这个内部对象或从中提取任何值。
是否有其他方法可以获得此标头?我可以看到数据存在,但我很难知道如何访问它。
如果它有用,这里是一个电话的片段...
HttpClient client = new HttpClient();
filePost = new PostMethod(URL_PATH);
InputStream ret ;
responseCode = client.executeMethod(filePost);
ret = filePost.getResponseBodyAsStream();
答案 0 :(得分:0)
从标题中获取内容长度。
Header[] headers = response.getAllHeaders();
for(Header h:headers){
if(h.getName().equals("Content-Length")){
length = h.getValue();
break;
}
}
答案 1 :(得分:0)
啊!发现它......
使用我上面的代码......
HttpClient client = new HttpClient();
filePost = new PostMethod(URL_PATH);
InputStream ret ;
responseCode = client.executeMethod(filePost);
ret = filePost.getResponseBodyAsStream();
//adding this here gets you the size of the incoming file
long fileSize = filePost.getResponseContentLength();