UrlDownloadToFile
파일을 인터넷에서 내려받습니다.
UrlDownloadToFile, URL, Filename
매개변수
- URL
내려 받을 파일의 URL. 예를 들어,
http://someorg.org
는 그 회사의 환영 페이지를 열람합니다.- Filename
파일에 내려받기: 지역적으로 생성될 파일의 이름을 지정합니다. 절대 경로가 지정되지 않으면 %A_WorkingDir%에 있다고 간주됩니다. 기존의 파일은 이 새 파일로 덮어쓰기 됩니다.
변수에 내려받기: 아래의 예제를 참조하십시오.
ErrorLevel
[v1.1.04+] 이 명령어는 실패시 예외를 던질 수 있습니다. 더 자세한 정보는 실행시간 에러를 참조하십시오.
ErrorLevel은 문제가 있으면 1로 설정되고 성공하면 0이 설정됩니다.
논평
원격 파일이 존재하지 않더라도 내려받기는 마치 성공한 것처럼 보일 수 있습니다. 많은 웹 서버가 실패한 파일 대신에 에러 페이지를 보내기 때문입니다. 이 에러 페이지가 Filename 대신에 저장될 것입니다.
Internet Explorer 3 이상은 설치해야 이 기능이 작동합니다. 방화벽이나 여러 네트워크 어댑터 때문에 이 기능이 작동하지 않을 수 있습니다. 또, 어떤 웹 사이트는 이런 식의 내려받기를 금지하기도 합니다.
Caching:
- v1.0.44.07+에서, URL은 원격 서버로부터 직접 열람됩니다 (즉, 인터넷 익스플로러의 캐쉬를 전혀 사용하지 않습니다). 캐쉬를 허용하려면, URL 앞에 *0과 스페이스 하나를 붙이십시오; 예를 들어:
*0 http://someorg.org
. 0 다음에 별표가 오면 유효한 dwFlag 번호로 교체됩니다. 자세한 것은 www.microsoft.com에서 InternetOpenUrl을 검색해 보십시오. -
1.0.44.07 이전에서, 파일은 가능하면 캐쉬로부터 열람합니다. 이를 피하려면 질의 문자열을 URL 끝에 지정하십시오. 예를 들어:
http://www.someorg.org/doc.html?fakeParam=42
. 주의: 같은 파일을 자주 내려받는다면, 질의 문자열은 반드시 다르게 해야 합니다.
Proxies: 마이크로소프트 인터넷 익스플로러의 설정에 프록시를 사용하도록 구성되어 있다면 UrlDownloadToFile은 프록시 서버를 사용하여 인터넷에 접근합니다.
FTP 그리고 Gopher: v1.0.48.04+는 FTP와 Gopher URL을 지원합니다. 예를 들어:
UrlDownloadToFile, ftp://example.com/home/My File.zip, C:\My Folder\My File.zip ; 익명으로 로그인 합니다. UrlDownloadToFile, ftp://user:pass@example.com:21/home/My File.zip, C:\My Folder\My File.zip ; 특정 사용자로 로그인 합니다. UrlDownloadToFile, ftp://user:pass@example.com/My Directory, C:\Dir Listing.html ; 디렉토리 리스트를 HTML 형식으로 얻습니다.
관련 항목
예제
UrlDownloadToFile, http://ahkscript.org/download/1.1/version.txt, C:\AutoHotkey Latest Version.txt UrlDownloadToFile, http://someorg.org/archive.zip, C:\SomeOrg's Archive.zip
; 예제: 텍스트를 변수에 내려받습니다: whr := ComObjCreate("WinHttp.WinHttpRequest.5.1") whr.Open("GET", "http://ahkscript.org/download/1.1/version.txt", true) whr.Send() ; 위의 'true'를 사용하고 아래의 호출을 사용하여 스크립트에 반응하도록 만듭니다. whr.WaitForResponse() version := whr.ResponseText MsgBox % version
; 예제: 비동기 HTTP 요청을 만듭니다. req := ComObjCreate("Msxml2.XMLHTTP") ; async를 켜고 요청을 엽니다. req.open("GET", "http://ahkscript.org/download/1.1/version.txt", true) ; 역호출 함수를 설정합니다 (v1.1.17+). req.onreadystatechange := Func("Ready") ; 요청을 전송합니다. 완료되면 Ready()가 호출됩니다. req.send() /* ; 기다릴 생각이라면 onreadystatechange는 필요가 없습니다. ; async=true로 설정하고 기다리면 내려받기가 되는 동안에도 ; 스크립트가 여전히 반응할 수 있습니다. ; 반면에 async=false로 설정하면 스크립트는 반응하지 않습니다. while req.readyState != 4 sleep 100 */ #Persistent Ready() { global req if (req.readyState != 4) ; Not done yet. return if (req.status == 200 || req.status == 304) ; OK. MsgBox % "Latest AutoHotkey version: " req.responseText else MsgBox 16,, % "Status " req.status ExitApp }