2011-02-16 21 views
4

我正在構建一個Java應用程序,它將允許我們的用戶加載文件列表並將這些文件傳輸到我們的服務器進行視頻編碼。我已經構建了一個用於在文件傳輸之前和之後管理文件的API,但是我需要爲實際移動文件決定一個好的傳輸協議。通過Java將大文件傳輸到遠程服務器的最可靠方法?

現在我傾向於使用阿帕奇百科全書網(參見:http://commons.apache.org/net/)包連同FTP將文件從客戶端計算機移動到服務器。一旦那裏我會使用安全的API調用將文件移動到他們需要去的任何地方。

這是最好的路線?有更好的方法可靠地傳輸大型(1 GB +)文件嗎?有沒有辦法使用這種方法恢復下載失敗?我想避免傳統的HTTP POST請求,因爲它們不可靠,無法恢復上傳失敗。

謝謝!

+0

我不認爲你可以用你的方法恢復斷開連接。你認爲它支持簡歷嗎? – phillip 2011-02-16 18:28:58

+0

我使用Commons Net for FTP取得了很大的成功,這是我遇到過的唯一一個大問題(這可能是因爲我使用的是舊版本),那就是在ls命令中,如果你不在正確的傳輸模式(被動,非被動),它只是掛起...沒有例外,沒有崩潰,只是...掛起... – Shaded 2011-02-16 18:29:19

+0

據我所知,你不能恢復與Commons Net斷開連接 - 所以這是一個原因我要求建議...... :)另外 - 感謝與被動與非被動的提示 - 可能救了我不少頭疼。 – FunnyLookinHat 2011-02-16 18:30:59

回答

1

您沒有提及如果使用Amazon S3作爲您的解決方案的選項,但它們確實提供本地部分上傳支持。其基本工作流程是:

  1. 創建上傳佔位符並保持到響應密鑰
  2. 上傳塊 - 可以同時和重試必要
  3. 使用響應關鍵塊組合成單個文件

Their SDK提供內置的文件切片和塊上傳。

即使S3不是最終位置,您也可以使用S3作爲上傳等待筆並在方便的時候下載文件進行永久存儲。

0

您對HTTP POST的理解並不完全正確。 HTTP標準不會將範圍請求限制爲只有GET方法 - 也可以將它們與POST或PUT一起使用。

此外,如果您可以控制客戶端和服務器端腳本,則可以將數據塊和StartAt位置作爲單獨的參數發佈。在服務器上,您檢查參數並在指定位置附加接收的數據。

相關問題