2014-05-23 6 views
0

저는 URLDownloadToFile을 사용하여 Delphi에서 파일을 다운로드합니다. URL에는 파일의 실제 이름이 없습니다. Explorer의 기본 이름 즉, 파일 이름을 그대로 유지하면서 파일의 경로 만 지정할 수 있습니까?URLDownloadToFile을 사용하여 파일 다운로드

+0

'Content-Disposition' 헤더에있는 파일 이름. 귀하의 질문에 더 많은 세부 사항을 제공해야 할 수도 있습니다. –

+0

Windows 클라이언트 응용 프로그램의 컨텍스트에서 URL (일부 매개 변수를 사용하여 빌드해야 함)이 있고 URLDownloadToFile을 호출합니다. 문제는 URL뿐 아니라 대상 파일의 이름을 전달해야한다는 것입니다. – Alberto

답변

5

당신은 잡다한 상황에 처해 있습니다. URLDownloadToFile()에 파일 이름을 지정해야하지만 URL에 먼저 고유 한 파일 이름이 있는지 검색해야합니다.

  1. 먼저 URL에 별도의 HEAD 요청을 전송하고있는 경우는 Content-Disposition 응답 헤더를 확인 :

    당신은 두 가지 선택이있다. 당신은 HttpSendRequest()HttpQueryInfo()을 그 또는 다른 HTTP 라이브러리에 사용할 수 있습니다. 그런 다음 필요에 따라 파일 이름을 형식화 한 다음 URL을 해당 파일 이름으로 다운로드 할 수 있습니다.

  2. 다운로드 할 때 임시 파일 이름을 사용하고 Content-Disposition 응답 헤더가있는 경우이를 확인하고 필요한 경우 파일의 이름을 변경하십시오. URLDownloadToFile()에서 응답 헤더를 얻으려면 IBindStatusCallbackIHttpNegotiate COM 인터페이스를 구현하는 클래스를 작성한 다음 해당 클래스의 인스턴스를 lpfnCB 매개 변수로 전달해야합니다. 응답 헤더는 IHttpNegotiate.OnResponse() 구현에 전달됩니다.