最近做一个程序,需要到一个网络地址获取图片,搜了一下午,网上的代码基本上都是差不多的,
大部分都是用 ipicture istream 和 chttpfile cinternetsession
//读取网页上图片文件,实际是个CHttpFile指针
CInternetSession session;
CFile* httpFile = NULL;
httpFile = (CFile*)session.OpenURL("http://127.0.0.1/ddm.jpg");
// CFile* httpFile = new CFile("C:\\Inetpub\\wwwroot\\ddm.jpg",CFile::modeRead);
if (httpFile!=INVALID_HANDLE_VALUE)
{
dwFileSize= httpFile->GetLength();//获取文件字节数
::GetFileSize(httpFile,&dwFileSize);
if (dwFileSize==0xFFFFFFFF)
return E_FAIL;
}
else
{
return E_FAIL;
}
//分配全局存储空间
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
LPVOID pvData = NULL;
if (hGlobal == NULL)
return E_FAIL;
if ((pvData = GlobalLock(hGlobal)) == NULL)//锁定分配内存块
return E_FAIL;
//把文件读入内存缓冲区
dwByteRead = httpFile->Read(pvData,dwFileSize);
GlobalUnlock(hGlobal);
bResult = CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
//装入图形文件
bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic);
//当使用cinternetsession返回的file这里就会失败
if(FAILED(bResult))
return E_FAIL;
我的iis是打开的,用浏览器也是可以打开这幅图片,但是用openurl返回的httpfile老是失败,我直接用cfile直接打开,是成功的,后面的代码应该没有问题,所以想请教原因
大部分都是用 ipicture istream 和 chttpfile cinternetsession
//读取网页上图片文件,实际是个CHttpFile指针
CInternetSession session;
CFile* httpFile = NULL;
httpFile = (CFile*)session.OpenURL("http://127.0.0.1/ddm.jpg");
// CFile* httpFile = new CFile("C:\\Inetpub\\wwwroot\\ddm.jpg",CFile::modeRead);
if (httpFile!=INVALID_HANDLE_VALUE)
{
dwFileSize= httpFile->GetLength();//获取文件字节数
::GetFileSize(httpFile,&dwFileSize);
if (dwFileSize==0xFFFFFFFF)
return E_FAIL;
}
else
{
return E_FAIL;
}
//分配全局存储空间
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
LPVOID pvData = NULL;
if (hGlobal == NULL)
return E_FAIL;
if ((pvData = GlobalLock(hGlobal)) == NULL)//锁定分配内存块
return E_FAIL;
//把文件读入内存缓冲区
dwByteRead = httpFile->Read(pvData,dwFileSize);
GlobalUnlock(hGlobal);
bResult = CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
//装入图形文件
bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic);
//当使用cinternetsession返回的file这里就会失败
if(FAILED(bResult))
return E_FAIL;
我的iis是打开的,用浏览器也是可以打开这幅图片,但是用openurl返回的httpfile老是失败,我直接用cfile直接打开,是成功的,后面的代码应该没有问题,所以想请教原因
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货