2009. 9. 7. 11:01

Use URLDownloadToFile

.URLDownloadToFile or URLDownloadToCacheFile 은 moniker를 사용하여 파일을 다운로드 하는 함수로 간단한 사용법으로 편리하게 사용이 가능하다.

IBindStatusCallback interface를 이용하면 몇가지 제어를 할 수 있다.

.Progress 구현 
IBindStatusCallback::OnProgress 를 이용하여 구현이 가능하다.


.Post Data 보내기


.encoding 문제
GET 방식으로 File을 download 하는 경우 IE6 과 IE7의 경우가 다르다.
영문은 문제가 없으나 한글인 경우는 Server 설정에 따른 한글 파일을 다운로드 받지 못할 수도 있음.

IE6 -> szURL의 내용이 그대로 전달
IE7 -> CP_ACP encoding (실제로 CP_ACP 인지는 알수 없으나 테스트를 해본 결과로 유추)에 URL Encoding 된 형태로 변경

IBindStatusCallback::GetBindInfo(DWORD __RPC_FAR *grfBINDF,
        /* [unique][out][in] */ BINDINFO __RPC_FAR *pbindinfo))
{
        DWORD cbSize = pbindinfo->cbSize;
memset( pbindinfo, 0, cbSize );
pbindinfo->cbSize = cbSize;
pbindinfo->dwCodePage = CP_UTF8;
}

위 함수를 이용하면 IE7인 경우 encoding을 변경할 수 있다.