如何在WinInet C ++中获取FTP下载的进度

时间:2015-10-11 10:26:23

标签: c++ ftp wininet

我正在创建一个从FTP服务器下载文件的程序。我想显示用户下载了多少字节的进度。我试过搜索但我找不到任何东西。首先,我的计划是使用fstream获取文件大小,但后来我意识到我不能同时共享2个进程。

1 个答案:

答案 0 :(得分:0)

我假设您正在使用FtpGetFile(..)从FTP服务器下载文件。这是下载文件的简单方法,它不会提供有关已经下载了多少字节的信息,而且您几乎无法控制该函数的行为(例如,根据用户请求取消下载?)。但是,为了快速测试,它非常有用。

要监控下载进度,请执行以下操作:

  1. 使用FtpFindFirstFile确定远程文件的大小。
  2. 使用FtpOpenFile打开远程文件。
  3. 使用CreateFile创建本地文件。
  4. 使用InternetReadFile从远程文件中读取一些字节。
  5. 评估InternetReadFile检测错误的返回值和错误代码以及传输是否完成。
  6. 使用WriteFile将这些字节写入本地文件。
  7. 计算/更新您的进度信息。
  8. 如果文件未完全下载且没有错误,请返回步骤4.
  9. 使用CloseHandle关闭本地文件。
  10. 使用InternetCloseHandle关闭远程文件。
  11. 如果您需要更多帮助,我可以提供一些代码来执行此操作...