일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- SDK
- 입문
- WIN32 SDK
- 데이터베이스
- xml
- 시리얼 통신
- Visual Basic
- 파이어버드
- 초보
- MFC
- 예제
- vb
- c#
- 소니
- dll
- 문자열
- Firebird
- PostgreSQL
- VB.NET
- Delphi
- SQL
- winsock
- 인스톨
- MySQL
- 기초
- 파라미터
- Visual Studio 2005
- 델파이
- 설치
- 셋업
- Today
- Total
프로그래밍 노트
HTTP를 통해 파일 다운로드하기 본문
아래같이 하면 간단하게 웹에 올라온 파일들을 다운로드 받을 수 있다.
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);
}
void CDownloadFromHttpDlg::OnBnClickedOk()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
getFileFromHttp("http://tattertools.com/ko/tistoryBanner01.gif", "tistoryBanner01.gif");
OnOK();
}
======================================================================