|
자답 오랜만에 들어가네요.. ㅡ0ㅡ;
qDecoder 를 찾아보니 더 어렵고..
API 책을 보니간단히 구현이 되네요..
한가지 아쉬운건 받을 파일의 전체 싸이즈를 받는 방법을 아직 모른다는겁니다..
받는 방법을 안다면 전체 크기에대한 수신상황을 표시 할 수 있을텐데
아쉬움이 남는군요
함수를 안찾아본건 아니지만.. 워낙 얄딱꾸리해서
아래는 소스입니다.
HTTP를 사용하기 위해선 wininet.h를 include 해야하며
wininet.lib를 사용하여야 합니다.
해당 파일이 어디에 위치하는지는 뭐 찾아보면 나오겠죵 ㅡ0ㅡ;
결국 wininet.dll을 사용한다고 들었습니다.
그럼.. 이만..
#include <wininet.h>
#pragma comment(lib, "WININET.lib")
bool __fastcall HttpDwonLoad(char *URL, char *Path)
{
HINTERNET hInternet, hURL;
HANDLE hFile;
DWORD Size;
DWORD dwRead, dwWritten, Recv = 0;
char buf[100000];
MSG Message;
// 연결
hInternet = InternetOpen("HTTPTEST", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if(hInternet == NULL)
return false;
// URL을 연다
hURL = InternetOpenUrl(hInternet, URL, NULL, 0, INTERNET_FLAG_RELOAD, 0);
if(hURL == NULL)
{
InternetCloseHandle(hInternet);
return false;
}
// 로컬 파일 생성
hFile = CreateFile(Path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
do
{
// 파일을 받아 로컬 파일에 저장
InternetQueryDataAvailable(hURL, &Size, 0, 0);
InternetReadFile(hURL, buf, Size, &dwRead);
WriteFile(hFile, buf, dwRead, &dwWritten, NULL);
// 다운 로드 받은 양을 메시지로 전달
Recv += dwWritten;
}
while(dwRead != 0);
InternetCloseHandle(hURL);
InternetCloseHandle(hInternet);
CloseHandle(hFile);
return true;
}
수야!╋ 님이 쓰신 글 :
: ㅇ_ㅎ;
:
: http를 통하여 파일을 받아야 하는데요
:
: 무거운 컴포넌트를 올리지 않고 받는 방법을 알고싶습니다.
:
: 자세히 몰라서 이렇게뿐이 물어보질 못하는데요..
:
: 부디 막막한 질문이 아니길 바라면서...
:
: 수고하세요~~ ^^
|