思路很清晰,使用CInternetSession创建CHttpFile对象。然后对该对象获取文件信息、进行文件读写操作均可。

void DownloadFile(LPCTSTR szURL, LPCTSTR szFile) //szURL 表示网页地址 szFile 表示保存本地的路径(及要保存的文件名) 感谢网友oceansoft http://blog.chinaunix.net/uid-7718934-id-2564609.html分享
{
DWORD dwFlag =                  //设置读取的方式
INTERNET_FLAG_TRANSFER_BINARY |
INTERNET_FLAG_DONT_CACHE |
INTERNET_FLAG_RELOAD; CInternetSession cis;
CHttpFile* pFile = (CHttpFile*)cis.OpenURL(szURL, , dwFlag); //创建CHttpFile对象
if(pFile)
{
DWORD dwStatusCode;
pFile->QueryInfoStatusCode(dwStatusCode); //获得HTTP响应请求的状态
CString dwFileLength;//这段代码是自己测试使用,获取请求文件的大小,单位是kb
     pFile->QueryInfo(HTTP_QUERY_CONTENT_LENGTH,dwFileLength);
int length = atoi(dwFileLength)/;
if(dwStatusCode == ) //200 表示 网页地址正常响应
{
CString str;
CFile cf; //创建CFile对象
if(!cf.Open(szFile, CFile::modeWrite|CFile::modeCreate)) //该目录是否有权限打开,如果打开失败就直接返回
return;
char lpBuf[];//每次读取文件的大小 为4kb
UINT dwRead = , dwFileLen = ;
do
{
dwRead = pFile->Read(lpBuf, sizeof(lpBuf)); //每次读取 4096 B = 1024 * 4 B = 4kb的内容 dwRead 为实际读写的大小
if(dwRead > )
{
cf.Write(lpBuf, dwRead); //写入文件
dwFileLen += dwRead; //dwFileLen表示实际下载的大小
}
}while(dwRead > );
cf.Close(); //关闭打开的资源
} pFile->Close();
delete pFile;
}
}
OpenURL函数原型如下:
CStdioFile* OpenURL(
LPCTSTR pstrURL, //下载的地址
DWORD_PTR dwContext = 1, //An application-defined value passed with the returned handle in callback. (具体是啥,还不用过,翻译就是在回调时返回的自定义值,英语各种水,就用它默认的值1)
DWORD dwFlags = INTERNET_FLAG_TRANSFER_ASCII, //设置传输的方式有很多 具体见 http://msdn.microsoft.com/zh-cn/library/d25ew7sy(v=VS.80).aspx
LPCTSTR pstrHeaders = NULL,
DWORD dwHeadersLength = 0
);
返回值有很多类型使用强制转换就可以了,我们使用的是CHttpFile
URL type Returns

file://

CStdioFile*

http://

CHttpFile*

gopher://

CGopherFile*

ftp://

CInternetFile*

测试的函数调用为DownloadFile("http://dldir1.qq.com/qqfile/qq/QQ2013/QQ2013SP6/9305/QQ2013SP6.exe", "E:\\程序\\C++测试\\tttt\\tttt\\QQ2013SP6.exe");

使用CInternetSession CHttpFile下载网页链接地址的文件的更多相关文章

  1. Linux 下载包链接地址

    Linux包下载链接地址: http://mirrors.sohu.com http://mirrors.163.com/

  2. Python入门小练习 002 批量下载网页链接中的图片

    我们常常需要下载网页上很多喜欢的图片,但是面对几十甚至上百张的图片,一个一个去另存为肯定是个很差的体验. 我们可以用urllib包获取html的源码,再以正则表达式把匹配的图片链接放入一个list中, ...

  3. 利用backgroundwork----递归读取网页源代码,并下载href链接中的文件

    今天闲着没事,研究了一下在线更新程序版本的问题.也是工作中的需要,开始不知道如何下手,各种百度也没有找到自己想要的,因为我的需求比较简单,所以就自己琢磨了一下.讲讲我的需求吧.自己在IIs上发布了一个 ...

  4. nodejs 下载网页及相关资源文件

    功能其实很见简单,通过 phantomjs.exe 采集 url 加载的资源,通过子进程的方式,启动nodejs 加载所有的资源,对于css的资源,匹配css内容,下载里面的url资源 当然功能还是很 ...

  5. 怎样下载网页中的js文件?

    1.按下F12,会看到调试的界面,如下图所示,先点击最上面的Resources选项,Frames--(你想下载的网址)--Script,下面就是全部的js文件啦,网站的图片啊什么的都可以下载了.

  6. paip.点击每个网页链接都提示下载的解决。

    paip.点击每个网页链接都提示下载的解决.   作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn. ...

  7. 怎么找到苹果App Store的应用程序下载链接地址

    http://jingyan.baidu.com/article/6dad5075f6fa79a123e36e85.html 怎么找到苹果App Store的应用程序下载链接地址 每个上传到苹果app ...

  8. MAC系统网页链接如何下载

    Folx 5 是一款简单易用.功能强大的Mac OS系统的下载管理器.Folx界面简洁,下载管理方便,支持网页链接下载.BT下载和YouTube下载,而且还可以设置计划任务.搜索BT种子以及添加Tra ...

  9. Python 爬虫5——爬取并下载网页指定规格的图片

    看完上篇文档之后,我们对于正则表达式已经有了基本的了解,其实学习最有效的办法就是带着问题和目的,这里我们假设有一个目标:获取某个网页上指定规格的图片的链接地址,并下载到本地. 一.实现步骤: 1.在浏 ...

随机推荐

  1. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 3.全局防护Bypass之Base64Decode

    0x01 背景 现在的WEB程序基本都有对SQL注入的全局过滤,像PHP开启了GPC或者在全局文件common.php上使用addslashes()函数对接收的参数进行过滤,尤其是单引号.同上一篇,我 ...

  2. __attribute__((unused))

    在gcc手册中找到了有关的解释: unused:This attribute, attached to a function, means that the function is meant to ...

  3. debian7 更换GCC版本

    最近在编译qt,之前用的是debian6,gcc版本是gcc-4.4,当使用debian7时,编译遇到了很多跟debian6不一样的问题,debian7的默认gcc使用的是gcc-4.7,可能是编译器 ...

  4. js中数组操作

    var selectedCodeArray = []; var num = $.inArray(值, selectedCodeArray)  //值在数组中的位置 selectedCodeArray. ...

  5. iOS tabbar 控制器基本使用

    RootViewController *rootVC=[[RootViewController alloc] init] SignInViewController *signVC = [[SignIn ...

  6. USB HID 协议入门

    转载请注明来源:cuixiaolei的技术博客 USB HID设备类的应用场合 USB HID类是USB设备的一个标准设备类,包括的设备非常多.HID类设备定义它属于人机交互操作的设备,用于控制计算机 ...

  7. ios 代码截屏模糊问题解决办法

    我们常用的截图方法如下所示: //尺寸是按照 UIGraphicsBeginImageContext(CGSizeMake(, )); //currentView 当前的view 创建一个基于位图的图 ...

  8. 使用MRUnit,Mockito和PowerMock进行Hadoop MapReduce作业的单元测试

    0.preliminary 环境搭建 Setup development environment Download the latest version of MRUnit jar from Apac ...

  9. php的一些简单算法程序(冒泡、快速等)

    冒泡排序: function buttle_sort($array) { $len=count($array); if($len<2){ return $array; } for($i=0;$i ...

  10. hdu 4739 状压DP

    这里有状态压缩DP的好博文 题目:题目比较神,自己看题目吧 分析: 大概有两种思路: 1.dfs,判断正方形的话可以通过枚举对角线,大概每次减少4个三角形,加上一些小剪枝的话可以过. 2.状压DP,先 ...