2017-04-07 94 views
0

我需要實現具有暫停和恢復功能的FTP客戶端。具有暫停和恢復功能的FTP客戶端

該主題提到了如何完成HTTP上傳File upload pause and resume in Android

FTP上傳也可以做類似的事情嗎?
我會假設服務器也需要支持這個功能。正確?
一些指針會很有幫助。

+0

取決於暫停應該停留多長時間/您的「暫停」是什麼意思。如果時間較短(從幾秒到幾分鐘),只需暫停寫入/讀取流。如果長時間(幾分鐘到幾小時甚至更長),您必須實施轉賬恢復。 –

+1

另外,你想用什麼語言來實現? –

+0

語言是C++。暫停可能超過5分鐘。我認爲這也需要服務器端的支持,對吧?在這種情況下,如何實現transfer-resume,某些指針可能會有所幫助。 – mathedi

回答

0

FTP沒有像HTTP一樣只傳輸文件的一部分的功能Content-Range。但是,如果您想停止上傳,您可以簡單地關閉數據連接,對於簡歷,您首先會發出SIZE命令來檢測上傳的文件大小,然後發出REST命令,並在要繼續上傳的文件位置輸入該命令。由於無法預先通知服務器最終文件大小,因此您應該首先上傳到具有臨時名稱的文件,並且在上載完成後使用RNFRRNTO將其重命名爲最終文件名。
有關這些FTP命令的更多信息,請查看該標準,即RFC 959

+0

對於[FTP RANG](https://tools.ietf.org/html/draft-bryan-ftp-range-08)命令,對於文件範圍的請求,存在_is_(過期)草稿。 – Castaglia

+0

@Castaglia:有趣。但與我的建議相反,這需要服務器的明確支持,我不知道哪個服務器執行了此命令。 –

0

要恢復原先中斷的轉移:

  • 檢查已上傳的文件部分的大小。您可以使用SIZE命令或(如果您的FTP服務器支持)命令MLST命令。

  • 使用APPE開始新的上傳,而不是STOR。尋找本地源文件流到已經上傳的偏移量。

    爲此,FTP服務器必須支持APPE命令(大多數服務器都是這樣做的)。