我有一個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