我想使用HttpConnection将文件上传到服务器。所以我想制作一个表示上传作业百分比的GaugeField。
但我在OutputStream中找到的所有内容都是.flush()
,它会将整个输出流一次刷新到服务器。所以我无法计算在特定时间上传的字节数
如何制作?有什么想法吗?
我使用了以下内容,但大部分时间都出错:
while (position < length) {
try {
os.write(postDataBytes, position, length100);
position += length100;
int location = position * 100 / length;
gaugeField.setValue(location);
os.flush();
}
}
答案 0 :(得分:2)
有两种方法可以做到:
以下是实现此目标的步骤:
1)在服务器端的上传Servlet中更新会话中的读取字节。
session.setAttribute(pBytesRead);
2)编写一个servlet UploadProgressServlet,它将进度写入响应。
response.getOutputStream().write(session.getAttribute("uploadprogress"));
3)让客户端向UploadProgressServlet发出请求以了解进度
您还可以使用具有Progress Listener支持的Apache Commons Upload API。在这种情况下,您必须以多部分格式编写数据。
答案 1 :(得分:0)
您可以使用方法
write(byte[] b, int off, int len);
并根据offset
变量计算百分比。