获取网络图片
CString URL="http://192.168.0.23:8080/3DView/CR201505060107001.jpg"
CInternetSession session;
CHttpFile *httpFile = (CHttpFile *)session.OpenURL(URL);
CStdioFile imgFile;
char buff[1024]; // 缓存
imgFile.Open("图片名字.png", CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
DWORD dwStatusCode;
httpFile->QueryInfoStatusCode(dwStatusCode);
if(dwStatusCode == HTTP_STATUS_OK) {
int size=0;
do {
size = httpFile->Read(buff,1024); // 读取图片
imgFile.Write(buff,size);
}while(size > 0);
}
httpFile->Close();
session.Close();
获取URL的html
CInternetSession session;
CHttpFile *httpFile = (CHttpFile *)session.OpenURL(m_URL);
DWORD dwStatusCode;
httpFile->QueryInfoStatusCode(dwStatusCode);
CString getdata=_T("");
if(dwStatusCode == HTTP_STATUS_OK) {
CString line_data=_T("");
while(httpFile->ReadString(line_data)) {
getdata += line_data; // 读取html
}
getdata.TrimRight();
}
httpFile->Close(); // html数据已经放在getdata中
session.Close();
// 如果 getdata 中保存的是UTF_8网页(可以看html的meta字段)
strCoding cfm; // 编码转换类,详情请看下方连接
string temp = (LPCSTR)getdata.GetBuffer(); // 网页数据,转换成string型
string output;
// UTF_8转GB2312,让MFC控件能显示
cfm.UTF_8ToGB2312(output,(char *)temp.data(),strlen(temp.data()));
// 若MFC字符集为Unicode的话,还需要将多字节转为宽字节
temp = output;
DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, temp.c_str(), -1, NULL, 0);
wchar_t *pwText;
pwText = new wchar_t[dwNum];
MultiByteToWideChar (CP_ACP, 0, temp.c_str(), -1, pwText, dwNum);
// 取得转换后结果 m_data 用于显示
m_data = pwText;
delete []pwText;
DEMO:
BOOL IHttpFileDownLoad::EnHttpImageDownLoad(CString strHttpUrl, CString strDownPath, CString &strDestFilePath)
{
BOOL bFlag = FALSE;
strHttpUrl.TrimLeft();
strHttpUrl.TrimRight();
if(strHttpUrl.IsEmpty() || strDownPath.IsEmpty()) return bFlag;
if(!::PathFileExists(strDownPath)) return bFlag;
CString URL = strHttpUrl;
CInternetSession session;
CHttpFile *httpFile = NULL;
try
{
httpFile = (CHttpFile *)session.OpenURL(URL);
}
catch (CInternetException* e)
{
e->Delete();
return bFlag;
}
if(httpFile==NULL){
session.Close();
return bFlag;
}
CString httpFileName = httpFile->GetFileName();
CString strFilePath = strDownPath;
if(strFilePath.Right(1)!="\\") strFilePath+="\\";
strFilePath += httpFileName;
CFileFind find;
BOOL bFind = find.FindFile(strFilePath);
if(bFind) CFile::Remove(strFilePath);
CStdioFile imgFile;
if (imgFile.Open(strFilePath, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary))
{
DWORD dwStatusCode;
httpFile->QueryInfoStatusCode(dwStatusCode);
if(dwStatusCode == HTTP_STATUS_OK) {
bFlag = TRUE;
DWORD fileLength = httpFile->GetLength();
char *buff = new char[fileLength];// 缓存
memset(buff, 0, fileLength);
int size=0;
do {
size = httpFile->Read(buff,1024);//读取图片
imgFile.Write(buff,size);
}while(size > 0);
if (buff!=NULL)
{
delete [] buff;
buff = NULL;
}
strDestFilePath = strFilePath;
}
}
imgFile.Close();
httpFile->Close();
delete []httpFile;
session.Close();
return bFlag;
}