[英]Uploading a file from a Java program to a Server
我想將zip文件從Java應用程序上載到運行Bottle Web框架的服務器。
我以前使用過django服務器,並且通過將小文件轉換為二進制數據然后通過郵寄請求將其發送來上傳小文件。
我不確定這是否是該項目的最佳方法,因為zip文件在1至10 mb之間。
仍然是轉換為二進制然后發送數據的理想選擇,還是建議使用另一種方法。
上載大文件可能會導致這種可怕的體驗,即上載99%之后,您的連接斷開,您必須重新開始。
通過HTTP從應用程序(這似乎是您的情況)將大文件上傳到服務器時,我希望采用以下方式:
讓您的應用程序將文件分成一些合理大小的小塊。 用序列號標記這些垃圾。 POST到您的服務器,此連接將開始上傳大文件並發送元數據(文件名等)。 然后開始發布塊。
當服務器收到一個塊時,他應該向客戶端確認這一點。
在服務器端,您需要實現邏輯以跟蹤傳輸的和丟失的塊,然后重新組裝塊文件。
只是我的兩分錢。
或者讓服務器決定需要哪個塊。 對話范例:
Client: I will upload "test.zip" in 4 chunks.
Server: Go ahead. Please send chunk 1.
Client: I am sending chunk 1 with checksum X.
Server: Thank you, checksum is OK. Please send chunk 2.
Client: I am sending chunk 2 with checksum Y.
Server: Thank you, checksum is bad. Please send chunk 2.
Client: I am sending chunk 2 with checksum Y.
Server: Thank you, checksum is OK. Please send chunk 3.
Client: I am sending chunk 3 with checksum Z.
Server: Thank you, checksum is OK. Please send chunk 4.
Client: I am sending chunk 4 with checksum A.
Server: Thank you, checksum is OK. Have a nice day.
從此開始,如果連接中斷,很容易實現丟失塊的重新傳輸。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.