返回列表 回復 發帖

BCB編程中實現中斷點續傳

 NMFTP是Delphi、Borland C++ Builder(以下簡稱BCB)自帶的FastNet控件組中的一個組件,主要用於實現FTP上傳、下載等功能。它在開發一些小型、簡單的網路應用軟體時非常有用。筆者最近在使用BCB6開發一套FTP客戶端軟體時需要實現中斷點上(續)傳(以下用"中斷點續傳"特指中斷點上(續)傳),最終通過NMFTP得以實現,在此將問題解決過程寫出來,與廣大程式員共饗。
一、系統函數假續傳
  用過NMFTP的朋友都知道,NMFTP有三個上傳函數可以滿足絕大部分的上傳操作。它們分別是:Upload()、UploadAppend()、UploadRestore()、UploadUnique(),這四個函數的原型為:
  procedure Upload(LocalFile, Remote
  File: string);
  procedure UploadAppend(LocalFile, RemoteFile: string);
  procedure UploadRestore(LocalFile, RemoteFile: string; Position: Integer);
  procedure UploadUnique(LocalFile: string);
  筆者的軟體要求在FTP伺服器不授予"刪除"許可權的條件下完成檔傳輸,且上傳的檔要與本地檔同名。因此中斷點續傳是解決問題的唯一途徑。通過幫助文檔可以知道,UploadRestore()、UploadAppend()兩個函數都能滿足要求,兩者唯一不同之處在於前者需要指定中斷點位置,而後者自動將檔接續在已上傳的檔後(伺服器上文件名需要與"RemoteFile"參數指定的檔案名相同)。
  實際使用過程中,發現兩者確實都可以完成續傳的目的,但是直接使用這兩個函數完成續傳以後的檔無法使用,而檔大小是續傳前的大小與原文件大小之和,也就是說,這兩個函數完成的"續傳"是把檔從前次中斷點處重新從頭傳了一遍,而並沒有真正的從中斷點處"續傳"。
返回列表