#include <afx.h>
#include <afxinet.h>
#define RECVPACK_SIZE 2048
bool DownloadSaveFiles(char* url,char *strSaveFile) {//下载文件并保存为新文件名bool ret=false;CInternetSession Sess("lpload");Sess.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT     , 2000); //2秒的连接超时Sess.SetOption(INTERNET_OPTION_SEND_TIMEOUT        , 2000); //2秒的发送超时Sess.SetOption(INTERNET_OPTION_RECEIVE_TIMEOUT     , 2000); //2秒的接收超时Sess.SetOption(INTERNET_OPTION_DATA_SEND_TIMEOUT   , 2000); //2秒的发送超时Sess.SetOption(INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, 2000); //2秒的接收超时DWORD dwFlag = INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_RELOAD ;CHttpFile* cFile   = NULL;char      *pBuf    = NULL;int        nBufLen = 0   ;do {try{cFile = (CHttpFile*)Sess.OpenURL(url,1,dwFlag);DWORD dwStatusCode;cFile->QueryInfoStatusCode(dwStatusCode);if (dwStatusCode == HTTP_STATUS_OK) {//查询文件长度DWORD nLen=0;cFile->QueryInfo(HTTP_QUERY_CONTENT_LENGTH, nLen);//CString strFilename = GetFileName(url,TRUE);nBufLen=nLen;if (nLen <= 0) break;////分配接收数据缓存pBuf = (char*)malloc(nLen+8);ZeroMemory(pBuf,nLen+8);char *p=pBuf;while (nLen>0) {//每次下载8Kint n = cFile->Read(p,(nLen<RECVPACK_SIZE)?nLen:RECVPACK_SIZE);//接收完成退出循环if (n <= 0) break;////接收缓存后移p+= n ;//剩余长度递减nLen -= n ;}//如果未接收完中断退出if (nLen != 0) break;//接收成功保存到文件CFile file(strSaveFile, CFile::modeCreate | CFile::modeWrite);file.Write(pBuf,nBufLen);file.Close();ret = true;}} catch(...) {break;//}} while(0);//释放缓存if (pBuf) {free(pBuf);pBuf=NULL;nBufLen = 0 ;}//关闭下载连接if (cFile) {cFile->Close();Sess.Close();delete cFile;}return ret;
}
int main() {DownloadSaveFiles("http://www.nirsoft.net/utils/nircmd.zip","d:\\cppdld_nircmd.zip");return 0;
}

http://bbs.csdn.net/topics/390052882

转载于:https://www.cnblogs.com/tiandsp/p/7440837.html

【转】c++ http下载文件相关推荐

  1. 用python下载文件的若干种方法汇总

    压缩文件可以直接放到下载器里面下载的 you-get 连接 下载任意文件 重点 用python下载文件的若干种方法汇总 写文章 用python下载文件的若干种方法汇总 zhangqibot发表于Met ...

  2. 初级版python登录验证,上传下载文件加MD5文件校验

    服务器端程序 import socket import json import struct import hashlib import osdef md5_code(usr, pwd):ret = ...

  3. linux快捷上传下载文件

    借助securtCRT,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器 其中,对于sz和rz的理解与记忆我用了如下的方法(因为很多时候容易搞混): ...

  4. 基于php下载文件的详解

    基于php下载文件的详解 本篇文章是对php下载文件进行了详细的分析介绍,需要的朋友参考下 php下载文件,比如txt文件. 出现的效果就是,弹出浏览器自带的下载框,出现另存为操作.有时候会出现内存溢 ...

  5. java上传加密_Java上传下载文件并实现加密解密

    使用 Jersey 服务器实现上传,使用 HTTP 请求实现下载 引入依赖 在 pom.xml 中添加 Jersey 相关依赖 com.sun.jersey jersey-client 1.18.1 ...

  6. sftp shell 批量上传文件_Shell自动上传下载文件到SFTP服务器

    1.说明 本文提供一个Shell脚本, 可以自动连接到SFTP服务器, 然后上传或者下载指定的文件, 进而可以使用Linux的corntab命令, 定时执行脚本上传下载文件, 实现文件的同步或者备份功 ...

  7. php 当前页面下载文件,php实现当前页面点击下载文件的简单方法

    php实现当前页面点击下载文件的简单方法 发布于 2017-08-02 17:44:21 | 80 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...

  8. ASP.NET 下载文件方式

    protected void Button1_Click(object sender, EventArgs e){/*微软为Response对象提供了一个新的方法TransmitFile来解决使用Re ...

  9. java urlconn 下载慢_使用HttpURLConnection下载文件时出现 java.io.FileNotFoundException彻底解决办法...

    import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.RandomAc ...

  10. 批量下载文件,循环中文件流没有关闭导致每次下载会累加之前的下载文件

    /*** 压缩** @param files 多文件* @param zipFilePath 目标压缩文件路径* @throws IOException*/ public static void zi ...

最新文章

  1. 未来黑客入侵的不仅有电脑,还有人脑?
  2. SharpDevelop 开源的 C# IDE ! 和 SharpZipLib
  3. JavaSE——IO(下)(Properties类、序列化与反序列化)
  4. 利用锁分析器进行线程竞争检测
  5. 【洛谷2624】[HNOI2008] 明明的烦恼(Python+利用prufer序列结论求解)
  6. 7.微服务:从设计到部署 --- 重构单体应用为微服务
  7. php多级审核,BOS单据多级审核需在单据头上列示多个审核人员的处理方法
  8. IPhone开发从零开始之1-构思你的产品
  9. PickerView的使用
  10. 关于IP转换器无法正常启动的问题
  11. LCD驱动芯片——BL55072A驱动程序
  12. Mixly 软件的基本应用
  13. 禾川Q1控制器连接威纶通显示屏
  14. wps打印错误未定义书签怎么解决_word文档打印时候目录出现错误!未定义书签,请问这个问题在wps里怎么修改?有些章节什么的页面可...
  15. Android架构学习之路三-MVX
  16. 环境变量GOBIN导致GoClipse运行出现异常
  17. 大数据时代网络安全问题分析
  18. vios配置的自动采集_VIOS共享存储池和精简配置
  19. 认识一下,JavaScript今年25岁啦
  20. WebService开发--手机号码归属地查询和天气预报查询

热门文章

  1. 百味扶胰系假药 冒用降糖宁胶囊批号
  2. CruiseControl中应用NCover和NCoverExplore
  3. Linux uptime 命令详解
  4. Git 修改 proxy,解决代理导致的代码无法 push 或 pull 的问题
  5. Android 给按钮绑定事件
  6. MySQL各种类型实验
  7. GPIO8种方式小总结
  8. ACM-ICPC 2018 徐州赛区网络预赛 Morgana Net
  9. 第七次团队作业——日不落战队
  10. Yii2几个要注意的小地方