Skip to content

Commit aafbcc4

Browse files
committed
1.0.0.1
0 parents  commit aafbcc4

10 files changed

+1099
-0
lines changed

Download.cpp

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
#include "ForgeHttp.h"
2+
3+
BOOLEAN CheckFileExist(PCHAR lpszPath)
4+
{
5+
if (GetFileAttributesA(lpszPath) == 0xFFFFFFFF && GetLastError() == ERROR_FILE_NOT_FOUND )
6+
{
7+
return FALSE;
8+
}
9+
else
10+
{
11+
return TRUE;
12+
}
13+
}
14+
BOOLEAN DownloadFileFromUrl(PCHAR pUrl,PCHAR pSaveFileName)
15+
{
16+
BOOLEAN bRet;
17+
HINTERNET hInternet;
18+
HINTERNET hOpenUrl;
19+
ULONG ulStatusCode;
20+
ULONG ulStatusSize;
21+
ULONG ulSize;
22+
ULONG ulLengthSize;
23+
HANDLE hLocalFile;
24+
BOOLEAN bIsWrite;
25+
ULONG ulRetReadBytesSize,ulRetWriteBytesSize;
26+
CHAR Buffer[0x1000];
27+
28+
29+
bRet = FALSE;
30+
hInternet = NULL;
31+
hOpenUrl = NULL;
32+
bIsWrite = TRUE;
33+
ulRetReadBytesSize = 0;
34+
ulRetWriteBytesSize = 0;
35+
36+
do
37+
{
38+
hInternet = InternetOpenA(NULL,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);
39+
if (NULL == hInternet)
40+
{
41+
break;
42+
}
43+
hOpenUrl = InternetOpenUrlA(hInternet,pUrl,NULL,0,INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_PRAGMA_NOCACHE,0);
44+
if (NULL == hOpenUrl)
45+
{
46+
InternetCloseHandle(hInternet);
47+
break;
48+
}
49+
ulStatusSize = sizeof(ulStatusCode);
50+
HttpQueryInfoA(hOpenUrl,HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER,&ulStatusCode,&ulStatusSize,NULL);
51+
if (200 != ulStatusCode)
52+
{
53+
InternetCloseHandle(hOpenUrl);
54+
InternetCloseHandle(hInternet);
55+
break;
56+
}
57+
ulLengthSize = sizeof(ulSize);
58+
HttpQueryInfoA(hOpenUrl,HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER,&ulSize,&ulLengthSize,NULL);
59+
if (ulSize < 0)
60+
{
61+
InternetCloseHandle(hOpenUrl);
62+
InternetCloseHandle(hInternet);
63+
break;
64+
}
65+
hLocalFile = CreateFileA(pSaveFileName,GENERIC_WRITE | GENERIC_READ,FILE_SHARE_READ | FILE_SHARE_WRITE,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
66+
if (hLocalFile == INVALID_HANDLE_VALUE)
67+
{
68+
InternetCloseHandle(hOpenUrl);
69+
InternetCloseHandle(hInternet);
70+
break;
71+
}
72+
while (TRUE)
73+
{
74+
InternetReadFile(hOpenUrl,Buffer,sizeof(Buffer),&ulRetReadBytesSize);
75+
if (ulRetReadBytesSize == 0)
76+
{
77+
break;
78+
}
79+
bIsWrite = WriteFile(hLocalFile,Buffer,ulRetReadBytesSize,&ulRetWriteBytesSize,NULL);
80+
if (bIsWrite == 0)
81+
{
82+
break;
83+
}
84+
}
85+
bRet = TRUE;
86+
} while (0);
87+
if (hLocalFile)
88+
{
89+
CloseHandle(hLocalFile);
90+
}
91+
if (hOpenUrl)
92+
{
93+
InternetCloseHandle(hOpenUrl);
94+
}
95+
if (hInternet)
96+
{
97+
InternetCloseHandle(hInternet);
98+
}
99+
return bRet;
100+
}

0 commit comments

Comments
 (0)