http://www.xxxxx.cn/iclk/?uid=62382&aid=67&linkuid=假设打开这个网址 能够下载一个 xxx.rar下载是搞定了 但是怎么获取文件名? //这个能下载上面的 但是文件名怎么得到? 如果取?uid=62382&aid=67&linkuid= 这样的话 文件名不能有?号
//正常地址 比如 http://www.baidu.com/xxx.rar
//可以直接取xxx.rar 但是上面特殊的怎么取原始文件名?
//拜托了 坐等回复...3Q 3Q
BOOL DownURLOperate::DownLoadFile(LPSTR URL, LPSTR szSavePath)
{
HANDLE hFile = CreateFile(szSavePath,GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile == INVALID_HANDLE_VALUE)
return FALSE;
HINTERNET hInternet, hUrl; hInternet = InternetOpen("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) "
"AppleWebKit/534.16 (KHTML, like Gecko) "
"Chrome/10.0.648.204 Safari/534.16",
INTERNET_OPEN_TYPE_PRECONFIG,NULL,
INTERNET_INVALID_PORT_NUMBER,0);
if(hInternet == NULL)
return FALSE;
hUrl = InternetOpenUrlA(hInternet, URL, NULL, 0, INTERNET_FLAG_RELOAD, 0);
if(hUrl == NULL)
return FALSE;
CHAR Buffer[1024]={NULL};
DWORD dwBytesRead = 0 , NumberOfBytesWritten =0;
BOOL bIsFirstPacket = true,bRet = true;
BOOL bResult = FALSE;
do
{
memset(Buffer, 0, sizeof(Buffer));
bResult=InternetReadFile(hUrl, Buffer, sizeof(Buffer), &dwBytesRead);
if (bResult&&bIsFirstPacket && ((PIMAGE_DOS_HEADER)Buffer)->e_magic!= IMAGE_DOS_SIGNATURE)
{
bRet = false;
break;
}
bIsFirstPacket = false;
WriteFile(hFile,Buffer,dwBytesRead,&NumberOfBytesWritten,NULL);
} while((dwBytesRead > 0)&&(bResult!=FALSE));
CloseHandle(hFile);
InternetCloseHandle(hUrl);
InternetCloseHandle(hInternet);
return TRUE;
}
//正常地址 比如 http://www.baidu.com/xxx.rar
//可以直接取xxx.rar 但是上面特殊的怎么取原始文件名?
//拜托了 坐等回复...3Q 3Q
BOOL DownURLOperate::DownLoadFile(LPSTR URL, LPSTR szSavePath)
{
HANDLE hFile = CreateFile(szSavePath,GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile == INVALID_HANDLE_VALUE)
return FALSE;
HINTERNET hInternet, hUrl; hInternet = InternetOpen("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) "
"AppleWebKit/534.16 (KHTML, like Gecko) "
"Chrome/10.0.648.204 Safari/534.16",
INTERNET_OPEN_TYPE_PRECONFIG,NULL,
INTERNET_INVALID_PORT_NUMBER,0);
if(hInternet == NULL)
return FALSE;
hUrl = InternetOpenUrlA(hInternet, URL, NULL, 0, INTERNET_FLAG_RELOAD, 0);
if(hUrl == NULL)
return FALSE;
CHAR Buffer[1024]={NULL};
DWORD dwBytesRead = 0 , NumberOfBytesWritten =0;
BOOL bIsFirstPacket = true,bRet = true;
BOOL bResult = FALSE;
do
{
memset(Buffer, 0, sizeof(Buffer));
bResult=InternetReadFile(hUrl, Buffer, sizeof(Buffer), &dwBytesRead);
if (bResult&&bIsFirstPacket && ((PIMAGE_DOS_HEADER)Buffer)->e_magic!= IMAGE_DOS_SIGNATURE)
{
bRet = false;
break;
}
bIsFirstPacket = false;
WriteFile(hFile,Buffer,dwBytesRead,&NumberOfBytesWritten,NULL);
} while((dwBytesRead > 0)&&(bResult!=FALSE));
CloseHandle(hFile);
InternetCloseHandle(hUrl);
InternetCloseHandle(hInternet);
return TRUE;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货