티스토리 뷰

반응형

파워빌더의 경우 파일다운로드로 검색시 ftp를 사용하여 다운로드하는 소스가 많이 있습니다.

FTP를 통해 다운로드 할 경우 윈도우 방화벽 및 각종 방화벽에 예외 처리를 해야 되기 때문에 프로그램 개발 완료 후 에도 방화벽 예외 처리 이슈가 발생합니다.

 

그래서 방화벽 예외 처리 없이 다운로드 하는 방법을 알게되어 공유 해 볼 까 합니다.

 

파워빌더 HTTP에있는 파일 다운로드방법

1. urlmon.dll을 사용합니다.

   위 파일은 윈도우 시스템 파일에 있습니다. (전 검색을 통해서 확보했습니다.)

 

2. Local External Functions 아니 Global External Functions중 용도에 맞게  아래 구분을 선언합니다.

Function long URLDownloadToFileA (Long Caller,String URL,String FileName,Long Reserved,Long lpfnCB) Library
          "urlmon.dll" Alias For "URLDownloadToFileA"

위 구분이 정상 작동하지 않을 경우 아래와 같이 Ansi 옵션을 추가하세요

Function long DeleteUrlCacheEntry(string lpszUrlName) library "Wininet.dll" alias for "DeleteUrlCacheEntry;Ansi"

Function long URLDownloadToFileA (Long Caller,String URL,String FileName,Long Reserved,Long lpfnCB) Library
          "urlmon.dll" Alias For "URLDownloadToFileA;Ansi"

3. 다운로드 방법 샘플 소스

Integer li_rtn
li_rtn = URLDownloadToFileA(0, 'http://url/파일명', 'C:\파일명', 0, 0)

if li_rtn = 0 then
	//캐쉬삭제를 안할 경우 캐쉬에있는 파일을 다운 받아 정상적인 다운이 안될 수 있음
	DeleteUrlCacheEntry('http://url/파일명'); //캐쉬삭제 (2020.07.20  추가)
	MessageBox('알림','다운로드 성공')
    
else
	MessageBox('알림','오류발생')
end if

 

4.기타

  파일이 한글명일 경우 오류가 발생하는경우가 있다고 합니다. (전 한글파일이 없어서 패스^^)

 

도움이 되셨다면 로그인 없이 가능한

아래 하트♥공감 버튼을 꾹 눌러주세요! 

 

 

 

 

 

반응형
댓글