显示完成上传的百分比

时间:2010-03-31 18:43:59

标签: java upload

我有一个用于将文件上传到服务器的java applet。 我想显示发送的数据的百分比,但是当我使用ObjectOutputStream.write()时,它只是写入缓冲区,不会等到数据实际发送完毕。我怎样才能做到这一点。 也许我需要使用线程同步或其他东西。任何线索都是最有帮助的。

2 个答案:

答案 0 :(得分:4)

请勿使用ObjectOutputStream。它用于编写序列化Java对象,而不是用于编写原始二进制数据。它可能确实阻止了流。而只是直接写入URL连接的OutputStream

那就是说,代码看起来相当复杂。即使在多次重读并无数次眨眼之后,我也无法做到正确。我建议您在Commons HttpClient的帮助下,根据multipart/form-data编码发送这些文件。您可以找到here基本代码示例。您只需修改Part[] parts即可包含所有文件。另一方面,servlet可以使用Commons FileUpload来解析multipart/form-data请求。

要计算进度,我建议选择CountingOutputStream Commons IO。只需将OutputStream包裹起来并写入即可。

更新:如果您不想发送带有更多第三方库的applet(我认为这是合理的),那么请查看this code snippet(以及原始问题)提到第一个链接)如何使用multipart/form-data自己创建URLConnection身体。

答案 1 :(得分:1)

我真正想要的是:

setFixedLengthStreamingMode(int contentLength)

这可以防止任何内部缓冲,让我确切知道发送的数据量。