c++下载文件(考虑浏览器缓冲)
来源:互联网 发布:linux中查看端口 编辑:程序博客网 时间:2024/06/05 01:00
CString DownloadFile(CString strURL,int type){//初始化数据//BYTE datalen[5];int len = 0;CHttpFile* pfile = NULL;CInternetSession session("HttpClient"); session.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 10 * 1000) ;//session.SetOption(INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, 1000*15);//session.SetOption(INTERNET_OPTION_DATA_SEND_TIMEOUT, 1000*10); session.SetOption(INTERNET_OPTION_CONNECT_BACKOFF, 1000) ; session.SetOption(INTERNET_OPTION_CONNECT_RETRIES, 2) ;//char m_buffer[1000];//memset(m_buffer,0x00,len);CString strData;try{//这里加入参数,否则第二次抓取相同文件时会获取缓冲区数据,导致数据没更新 2009-2-3 shenay//使用文本数据 |强制重读取数据| 不保留缓冲区pfile = (CHttpFile *)session.OpenURL(strURL,1,INTERNET_FLAG_TRANSFER_ASCII|INTERNET_FLAG_RELOAD|INTERNET_FLAG_DONT_CACHE);DWORD dwStatusCode;pfile->QueryInfoStatusCode(dwStatusCode);//返回网络请求状态参数//若能读到网络数据,则开始解析DAY文件if(dwStatusCode==HTTP_STATUS_OK){CString cslen;pfile->QueryInfo(HTTP_QUERY_CONTENT_LENGTH,cslen);len = atoi(cslen);char *pBuffer = new char[len+1];int backlen = pfile->Read(pBuffer,len);if(type == 0){strData = pBuffer;strData = strData.Left(len);}else if(type == 1){CFile file;if(file.Open(m_strSysConfig,CFile::modeCreate|CFile::modeWrite)){file.Write(pBuffer,len);file.Close();}}else if(type == 2){char path[255];SHGetSpecialFolderPath(0,path,CSIDL_DESKTOPDIRECTORY,0);CString strSavePath(path);strSavePath += "\\新版新闻操作程序.rar";//解密for(int i=0; i<len; i++)pBuffer[i] ^= 4182;CFile file;if(file.Open(strSavePath,CFile::modeCreate|CFile::modeWrite)){file.Write(pBuffer,len);file.Close();}}pfile->Close();delete pfile;delete []pBuffer;}}catch(CInternetException * pException){CString strMsg = "验证程序版本失败,请确认网络连接状况!\r\n";char szErr[1000];if(pException->GetErrorMessage(szErr,1000))strMsg += szErr;strData = szErr;}session.Close();delete session;return strData;}
阅读全文
0 0
- c++下载文件(考虑浏览器缓冲)
- 考虑浏览器兼容的文件上传
- 浏览器文件下载问题
- 模拟浏览器下载文件
- java浏览器下载文件
- 关于浏览器检测文件下载
- 浏览器下载文件编码问题
- 文件下载兼容各种浏览器
- asp.net 浏览器文件下载
- springmvc实现浏览器下载文件
- PHP 下载文件到浏览器
- 浏览器通过下载来下载文件
- 文件缓冲
- 通知浏览器下载文件而不是打开文件
- 浏览器缓冲机制集
- 前端随记---文件下载启用浏览器下载和迅雷下载
- C#WebService下载文件
- C#WebService下载文件
- spark Shuffle过程分析
- open函数mode参数详解
- 字符串碎片
- Leetcode之Unique Paths 问题
- centos安装gcc及g++
- c++下载文件(考虑浏览器缓冲)
- RabbitMQ如何实现迟队列
- 在Windowns环境安装Maven
- jQuery——ajax
- iOS项目本地存储NSUserDefault的改进
- 【福利】最新ipa重签教程
- 二叉树的建立和遍历
- 为什么总有人黑 JavaScript?就真的那么差吗?——爱创课堂
- 【libevent】libevent库学习总结(一)——基础