MFC下载文件出错了,谁来帮帮忙.

jues 2010-07-21 11:53:28
TRY
{
CInternetSession sess ;

// 统一以二进制方式下载
DWORD dwFlag = INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_RELOAD ;
CHttpFile * pF = (CHttpFile*)sess.OpenURL("http://55.duote.org/sniffpass.exe", 1, dwFlag); ASSERT(pF);
if (!pF)
{AfxThrowInternetException(1);}

// 得到文件大小
CString str ;
pF->QueryInfo (HTTP_QUERY_CONTENT_LENGTH, str) ;
int nFileSize = _ttoi(str) ;



char * p;
p= new char [nFileSize] ;
int i1;
i1=nFileSize;
while (true)
{
// 每次下载8Kb
int n = pF->Read (p, (nFileSize < 8192) ? nFileSize : 8192) ;
if (n <= 0)
break ;

p += n ; nFileSize -= n ;
}
CFile file;
file.Open("d:\\1.exe",CFile::modeCreate|CFile::modeWrite);

file.Write(&p,i1);


file.Close();

delete[] p ;
delete pF ;
}
CATCH_ALL(e) {}
END_CATCH_ALL



//运行后出现如图片上的错误.就算把文件保存到硬盘的那部分代码去掉也不行.
图片地址:http://hi.baidu.com/jues17/album/item/7fdac58afa3b6493fd1f10e3.html

...全文
65 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jues 2010-07-22
  • 打赏
  • 举报
回复
哈哈,我自己在它们的基础上写了一个下载的函数,以后就不用那么麻烦了.
Eleven 2010-07-21
  • 打赏
  • 举报
回复
delete[] p ;
delete pF ;
--------------------
delete[] p;错了,你修改了p的地址,在上面的while中读去文件数据的时候
delete pF; 你有new 吗?
Eleven 2010-07-21
  • 打赏
  • 举报
回复
URLDownloadToFile();下载文件
jues 2010-07-21
  • 打赏
  • 举报
回复
elete[] p;错了,你修改了p的地址,在上面的while中读去文件数据的时候
我看不出来呀,是哪里改了地址是p+=n;p这里吗?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧