728x90
기본적으로 http 파일을 받기 위해서, url 연결해서 정해진 위치에 파일을 다운로드 받는 기능을 가진 클래스입니다구현도 간단하고, 사용법도 간단합니다. 이걸 만든 목적은 이어받기를 보다 편한방법으로 하기위해서 만들었습니다.

 

 아마도 Microsoft WinHTTP Services, version 5.1 LIbrary WinHttpRequest클래스는 많이 써보셨을겁니다.. 잘보면 cHTTPFile클래스는 WinHttpRequest클래스처럼 URL정보를 효과적을 Query하는 메서드가 없고, 비동기전송을 하는 기능도 구현하지않았는데, 왜냐하면 클래스의 목적은 단지 '이어받기 지원'이므로구현하지는 않았습니다. (별로 사용하지 않는기능이기도 하고... 물론 귀찮아서 ㅡㅡ;;)

  URL정보를 Query하는 루틴은 이미 cHTTPFile클래스에 있습니다만..  전송방식은 동기전송방식이므로 비동기전송방식에 대한 코드가 없으므로 간단히 구현방향에 대해서 설명드리겠습니다.

  간단하게 비동기전송방식으로 구현하시려면 InternetReadFileEx 파일을 받는 루틴으로 변경하시고 Url연결부분에서 비동기모드로 연결하고 기타 여러가지 처리를 해주시면 됩니다.

 

  아무튼 Wininet.dll API 사용했으니 그런 멤버들을 구현하시기 어렵지는 않을것입니다.

 

  우선 cHTTPFile 개체를 생성(WithEvents구문을 사용하셔서 각종 이벤트를 처리할수있습니다.)하신 ,

Connect메서드로 파일이존재하는 Url 연결합니다. 메서드는 연결성공및 실패이유등을 아룻있도록 hfConnectResult열거형 상수중 하나를 반환합니다그리고 SetLocalPath메서드로 어느곳에 파일을 받을지 지정합니다. 첫번째인수는 받을 폴더주소이고, 두번째 인수는 파일이름인데 생략가능하며, 생략하면 URL 파일이름으로 설정됩니다.

이렇게 다운로드 받을 URL 저장할 위치를 정했으면,

Download메서드를 호출하시면 됩니다. 이때 다운로드 메서드인 인수 Overwrite True 하시면. 기존에 존재하는 파일을 제거하고 다시받습니다. 그리고 인수를 False 하면기존의 파일을 이어받기 다운로드 받습니다. 그리고 cHTTPFile개체로 할일이 없다면. Disconnect메서드를 호출해서 연결을 끊으면 됩니다..

밖에 다른 멤버들은 설명할필요없이 이름 그대로의 기능(위에서 말한 것도 그렇지만..) 합니다..  (-Cancel메서드로 다운로드받는중 다운로드를 취소가 가능하고, StatusCode속성은 200인경우 정상적인 URL이라고 알수있습니다..)

 

Example Code>>

 

cHTTPFile cHTTPFile 평가되는 식이고 Boolean True False 평가될수있는 식입니다. 그리고 [] 생략가능한 인수입니다.


    cHTTPFile.Connect "URL주소"

    cHTTPFile.SetLocalPath "저장될 폴더위치", ["파일명"]

    cHTTPFile.Download Boolean'덮어쓰기 혹은 이어받기할지 설정

    cHTTPFile.Disconnect


이벤트를 사용하려면 WithEvents 사용하셔서 다음 이벤트를 사용하면 됩니다.


Public Event Connect(State As hfConnectResult)  //
연결할때 발생
Public Event Disconnect() //
연결을 끊을때 발생

 

//다운로드가 시작할때 발생

>>FileName  다운받을 파일의 파일명이고, FileSize URL상의 파일크기입니다.
Public Event DownloadStart(ByVal FileName As String, ByVal FileSize As Long)

 

//다운로드가 시작할때 발생

>>Data() 받아진 데이터의 내용이고, CurrentFileSize 현재까지 받아진 크기입니다.
Public Event DownloadDataAvailable(Data() As Byte, CurrentFileSize As Long)


Public Event DownloadCompleted()  //
다운로드가 완료될때 발생
Public Event DownloadCancelled()  //
다운로드가 취소될때 발생

 

//다운로드가 실패할때 발생

>>Error  실패원인으로 hfConnectResult hfErrorCode 열거형상수값중 하나를 반환합니다.
Public Event DownloadFailed(ByVal Error As Long)

'프로그램언어 > VB' 카테고리의 다른 글

WININET API 선언문  (0) 2008.04.24
ToolTip Class  (0) 2008.03.25
INI(설정)파일 Read & Write 모듈  (0) 2008.03.25
Registry Read & Write 샘플 프로젝트 소스  (1) 2008.03.25
OS 언어 확인  (0) 2008.03.24

+ Recent posts