我有一个Java applet上传文件到服务器。 我想显示已发送数据的百分比,但是当我使用ObjectOutputStream.write()
时,它只是写入缓冲区,不会等到数据实际发送完毕。我怎样才能做到这一点。 也许我需要使用线程同步什么的。任何线索将是最有帮助的。显示上传完成%
显示上传完成%
回答
我一直在寻找的竟是:
setFixedLengthStreamingMode(int contentLength)
这可以防止任何内部缓冲让我确切知道的数据量发送。
请勿使用ObjectOutputStream
。它用于编写序列化的Java对象,而不用于编写原始二进制数据。它可能确实阻止了流。而是直接写入URL连接的OutputStream
。
也就是说,代码看起来相当复杂。即使重读了几遍,无数次地眨眼睛,我仍然无法理解。我建议您在Commons HttpClient的帮助下根据multipart/form-data
编码发送这些文件。您可以找到here的基本代码示例。您只需修改Part[] parts
即可包含所有文件。另一方面的servlet可以使用Commons FileUpload来解析multipart/form-data
请求。
要计算进度,我建议选择的CountingOutputStream
。只需用它包装OutputStream
并写入它。
更新:,如果你不喜欢船与更多的第三方库的小程序(我想象是合理的),然后看看this code snippet(和第一个链接中提到的原来的问题)如何创建一个multipart/form-data
身体使用URLConnection
。
非常感谢。我知道代码很复杂。我自己并没有写这个,因为我刚刚得到了这段代码,并且正在尝试制作一些新的东西。我会试一试你的例子。顺便说一句,我只是想在你的博客上向你表示祝贺,因为它对JSF帮助很大! – user295744 2010-04-01 09:03:32
我实际上需要使用ObjectOutputStream,因为我在这里给出的代码之前发送了一个HashMap ... – user295744 2010-04-01 09:38:20
谢谢。那么这就是ObjectOutputStream的本质。它不能逐字节发送数据,它只能以块/对象发送数据。要么与它共存,要么放弃它,然后发送一个“正常的”HTTP多部分/表单数据请求。 – BalusC 2010-04-01 12:17:44
- 1. 显示文件上传完成时上传的文件总数
- 2. 在CKEditor中完成上传后显示完整FileURL
- 3. ipa上传成功,但没有显示上传完成后xcode 8
- 4. 在软键盘上显示'完成'键
- 5. 在UIKeyboardWillShowNotification上显示“完成”导航项
- 6. AWS S3 transferutility上传从未上传但显示完整无错
- 7. Plupload - 上传完成功能?
- 8. Proftpd验证完成上传
- 9. Dropzone显示上传成功,但文件未上传到Laravel 5
- 10. ftp mget不显示成功完成
- 11. Installutil成功完成,但服务未显示在服务上
- 12. jquery ui自动完成显示提示?
- 13. webViewDidFinishLoad没有完成加载,但没有完成在屏幕上显示内容
- 14. 自动完成DOS不显示结果传递自定义值
- 15. 显示用户上传上传到
- 16. Python IDLE。自动完成/显示完成不起作用
- 17. Uploadify完成,但不会上传
- 18. 留意上完成文件传输
- 19. WebClient.UploadFileAsync - 上传完成后删除
- 20. Ruby检查webdav上传是否完成
- 21. 上传完成后移动脚本
- 22. 检测SFTP文件上传完成
- 23. Boto3:等待S3流式上传完成
- 24. 在Ext.net(ASP.NET)中上传完成事件?
- 25. 当上传到苹果商店完成
- 26. 上传完成后ResumableGDataFileUploader没有结束
- 27. 上传完成时的Tinybrowser错误403
- 28. 应用完成,上传到市场?
- 29. jQuery文件上传完成功能
- 30. 完成多个文件的上传
寻找这样做的现有代码。不要写你自己的 – Pyrolistical 2010-03-31 18:56:00