2015-10-11 55 views
0

我正在創建一個從FTP服務器下載文件的程序。我想顯示用戶下載了多少字節的進度。我試圖尋找它,但我找不到任何東西。首先,我的計劃是使用fstream獲取文件大小,但後來我意識到我無法同時共享2個進程。如何在WinInet C++中獲取FTP下載的進度

回答

0

我假設您使用FtpGetFile(..)從FTP服務器下載文件。這是下載文件的簡單方法,它不會提供關於已經下載了多少字節的信息,而且您幾乎無法控制該函數的行爲方式(例如,根據用戶請求取消下載?)。儘管如此,爲了快速測試它非常有幫助。

爲了監控下載進度執行以下操作:

  1. 使用FtpFindFirstFile確定遠程文件的大小。
  2. 使用FtpOpenFile打開遠程文件。
  3. 使用CreateFile創建本地文件。
  4. 使用InternetReadFile從遠程文件讀取一些字節。
  5. 評估檢測錯誤和傳輸完成時的返回值和錯誤代碼InternetReadFile
  6. 使用WriteFile將這些字節寫入本地文件。
  7. 計算/更新您的進度信息。
  8. 如果沒有完全下載文件並且沒有錯誤,請返回步驟4。
  9. 使用CloseHandle關閉本地文件。
  10. 使用InternetCloseHandle關閉遠程文件。

如果您需要更多的幫助,我可以提供一些代碼這樣做...