我创建了一个servlet,它将文件的内容读取到一个字节数组,然后将其写入响应的OutputStream:
// set headers
resp.setHeader("Content-Disposition","attachment; filename=\"file.txt\"");
resp.setHeader("Content-Length", "" + fileSize);
// output file content.
OutputStream out = resp.getOutputStream();
out.write(fileBytes);
out.close();
现在,我还写了一个“客户端”,需要找出文件的大小。这应该很容易,因为我添加了“Content-Length”标题。
URLConnection conn = url.openConnection();
long fileSize = conn.getContentLength();
然而,我对整体情况有点不确定。据我了解自己的servlet,整个文件内容被转储到响应的OutputStream。但是,调用getContentLength()是否也会以某种方式部分或完全下载实际文件数据?换句话说,当我调用conn.getContentLength()时,将从服务器返回多少文件?标题是否与内容“分开”?
所有输入都非常感谢!
答案 0 :(得分:2)
但是,调用getContentLength()也会导致实际的结果 文件数据以某种方式部分或全部下载?
不,getContentLength()
方法只返回内容大小的String值作为整数。
换句话说,当我调用conn.getContentLength()时,多少 该文件将从服务器返回?
不会下载任何文件。
标题是否与内容“分开”?
是的,标题与内容“分开”。
现在你确定了:D
答案 1 :(得分:1)
请参阅javadocs
返回
content-length
标头字段的值。
因此,对getContentLength()
的调用只会读取标头值,并且不会导致任何下载。你必须为此致电getContent()
。