如何控制文件下载过程, 如进度条显示、下载中取消操作
编号:QA003033
建立日期: 2000年6月13日 最后修改日期:2000年6月13日
所属类别:
Q
fist007:
操作系统:nt
编程工具:vc6.0
问题:我用wininet的MFC类做一个ftp下载程序。步骤如下:
1.CInternetSession* m_pSession;
m_pSession = new CInternetSession("MYAPP",1,PRE_CONFIG_INTERNET_ACCESS);
2.CFtpConnection* m_pFtpConnection;
m_pFtpConnection = m_pSession->GetFtpConnection("n4","anonymous","guest");
{其中n4是我所用的ftp server的机器名}
3.下载文件所用函数(简化了的)
void DownLoad()
{
CString strRemoteFileName;
CInternetFile* RemoteFile;
try
{
RemoteFile = m_pFtpConnection->OpenFile(strRemoteFileName);
}
catch (CInternetException* pEx)
{
TCHAR szErr[1024];
if (pEx->GetErrorMessage(szErr, 1024))
AfxMessageBox(szErr, MB_OK);
else
AfxMessageBox(IDS_EXCEPTION, MB_OK);
pEx->Delete();
return;
}
RemoteFile->Close();
delete RemoteFile();
}
(因为我想控制文件下载过程,比如进度条显示,下载中取消操作,所以没用CFtpConnection的GetFile()成员函数,而改用OpenFile得到一个CInternetFile指针,再用CInternetFile的Read函数下载数据)
可是第二次执行OpenFile()时老是产生一个异常,不知道是甚麽原因。请高手指教。
A回答:
你可以到http://www.codeguru.com/internet/ftp_download.shtml下载VC6源代码例子,并且可以显示进度条,可以取消。
我后来发现ftp server上wininet.dll与我的机器上的wininet.dll版本不同,ftp server上的大小为361K,我的机器上的是449K,更换了我的机器上的wininet.dll后就没问题了。(ftp server 和我机器都是NT4.0 workstation)。
此问题由chf回答。
附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, Internet编程, INET, www, internet, ie。
| |
|
|
| |
|
|