热情软件屋

 

如何控制文件下载过程, 如进度条显示、下载中取消操作


编号:QA003033
建立日期: 2000年6月13日 最后修改日期:2000年6月13日
所属类别:

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()时老是产生一个异常,不知道是甚麽原因。请高手指教。

回答:

    你可以到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

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio