웹상을 파일을 프로그램을 통해 다운로드 하기 위한 함수.
여러 블로그에 글이 있지만 가장 쓰기 간단하게 잘 정리되있는 글 담아두기..
원문 중
=================================================================================================
getFileFromHttp("http://tattertools.com/ko/tistoryBanner01.gif", "tistoryBanner01.gif");
이미지 파일을 다운 받으려면 어떻게 해야되는지 몰라서 한참 해맸다.
URL에는 파일명까지 들어가야된다. 그리고 저장할 파일의 이름을 지정한다.
특정 폴더에 파일을 저장하려면 저장할 파일에 패스를 입력하면된다.
예를 들어 URL을 이렇게 주고 "http://wwwi.tistory.com/"
저장할 파일을 "test.html"로 주면 http://wwwi.tistory.com/의 첫페이지가 test.html로 저장된다.
- #include "Wininet.h" // 밑의 함수를 쓰려면 이 라인을 반드시 추가해야 됨
- #define READ_BUF_SIZE 1024
- // 웹상의 파일을 다운로드
- int getFileFromHttp(char* pszUrl, char* pszFile)
- {
- HINTERNET hInet, hUrl;
- DWORD dwReadSize = 0;
- // WinINet함수 초기화
- if ((hInet = InternetOpen("MyWeb", // user agent in the HTTP protocol
- INTERNET_OPEN_TYPE_DIRECT, // AccessType
- NULL, // ProxyName
- NULL, // ProxyBypass
- 0)) != NULL) // Options
- {
- // 입력된 HTTP주소를 열기
- if ((hUrl = InternetOpenUrl(hInet, // 인터넷 세션의 핸들
- pszUrl, // URL
- NULL, // HTTP server에 보내는 해더
- 0, // 해더 사이즈
- 0, // Flag
- 0)) != NULL) // Context
- {
- FILE *fp;
- // 다운로드할 파일 만들기
- if ((fp = fopen(pszFile, "wb")) != NULL)
- {
- TCHAR szBuff[READ_BUF_SIZE];
- DWORD dwSize;
- DWORD dwDebug = 10;
- do {
- // 웹상의 파일 읽기
- InternetReadFile(hUrl, szBuff, READ_BUF_SIZE, &dwSize);
- // 웹상의 파일을 만들어진 파일에 써넣기
- fwrite(szBuff, dwSize, 1, fp);
- dwReadSize += dwSize;
- } while ((dwSize != 0) || (--dwDebug != 0));
- fclose( fp );
- }
- // 인터넷 핸들 닫기
- InternetCloseHandle(hUrl);
- }
- // 인터넷 핸들 닫기
- InternetCloseHandle(hInet);
- }
- return(dwReadSize);
- }
출처 : http://wwwi.tistory.com/35
'Programming > C, C++, MFC' 카테고리의 다른 글
class를 포함한 dll 만들기 ( 클래스 동적 라이브러리 ) (1) | 2016.05.17 |
---|---|
visual studio 프로젝트 및 솔루션 이름을 변경하기. (0) | 2016.05.17 |
[Function] 폴더 내 파일 탐색 (0) | 2015.12.09 |
성능 및 메모리 관점에서 살펴본 if문과 switch 문의 차이점 (0) | 2015.04.21 |
[VS2013] error MSB8031 - 멀티바이트문자집합 에러를 해결하자. (0) | 2015.03.06 |