【转】c++ http下载文件
#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下载文件相关推荐
- 用python下载文件的若干种方法汇总
压缩文件可以直接放到下载器里面下载的 you-get 连接 下载任意文件 重点 用python下载文件的若干种方法汇总 写文章 用python下载文件的若干种方法汇总 zhangqibot发表于Met ...
- 初级版python登录验证,上传下载文件加MD5文件校验
服务器端程序 import socket import json import struct import hashlib import osdef md5_code(usr, pwd):ret = ...
- linux快捷上传下载文件
借助securtCRT,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器 其中,对于sz和rz的理解与记忆我用了如下的方法(因为很多时候容易搞混): ...
- 基于php下载文件的详解
基于php下载文件的详解 本篇文章是对php下载文件进行了详细的分析介绍,需要的朋友参考下 php下载文件,比如txt文件. 出现的效果就是,弹出浏览器自带的下载框,出现另存为操作.有时候会出现内存溢 ...
- java上传加密_Java上传下载文件并实现加密解密
使用 Jersey 服务器实现上传,使用 HTTP 请求实现下载 引入依赖 在 pom.xml 中添加 Jersey 相关依赖 com.sun.jersey jersey-client 1.18.1 ...
- sftp shell 批量上传文件_Shell自动上传下载文件到SFTP服务器
1.说明 本文提供一个Shell脚本, 可以自动连接到SFTP服务器, 然后上传或者下载指定的文件, 进而可以使用Linux的corntab命令, 定时执行脚本上传下载文件, 实现文件的同步或者备份功 ...
- php 当前页面下载文件,php实现当前页面点击下载文件的简单方法
php实现当前页面点击下载文件的简单方法 发布于 2017-08-02 17:44:21 | 80 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...
- ASP.NET 下载文件方式
protected void Button1_Click(object sender, EventArgs e){/*微软为Response对象提供了一个新的方法TransmitFile来解决使用Re ...
- java urlconn 下载慢_使用HttpURLConnection下载文件时出现
java.io.FileNotFoundException彻底解决办法...
import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.RandomAc ...
- 批量下载文件,循环中文件流没有关闭导致每次下载会累加之前的下载文件
/*** 压缩** @param files 多文件* @param zipFilePath 目标压缩文件路径* @throws IOException*/ public static void zi ...
最新文章
- 未来黑客入侵的不仅有电脑,还有人脑?
- SharpDevelop 开源的 C# IDE ! 和 SharpZipLib
- JavaSE——IO(下)(Properties类、序列化与反序列化)
- 利用锁分析器进行线程竞争检测
- 【洛谷2624】[HNOI2008] 明明的烦恼(Python+利用prufer序列结论求解)
- 7.微服务:从设计到部署 --- 重构单体应用为微服务
- php多级审核,BOS单据多级审核需在单据头上列示多个审核人员的处理方法
- IPhone开发从零开始之1-构思你的产品
- PickerView的使用
- 关于IP转换器无法正常启动的问题
- LCD驱动芯片——BL55072A驱动程序
- Mixly 软件的基本应用
- 禾川Q1控制器连接威纶通显示屏
- wps打印错误未定义书签怎么解决_word文档打印时候目录出现错误!未定义书签,请问这个问题在wps里怎么修改?有些章节什么的页面可...
- Android架构学习之路三-MVX
- 环境变量GOBIN导致GoClipse运行出现异常
- 大数据时代网络安全问题分析
- vios配置的自动采集_VIOS共享存储池和精简配置
- 认识一下,JavaScript今年25岁啦
- WebService开发--手机号码归属地查询和天气预报查询