UrlDownloadToFile

인터넷으로부터 파일을 내려받습니다.

UrlDownloadToFile, URL, Filename

매개변수

URL

내려 받을 파일의 URL. 예를 들어, "https://someorg.org"는 그 회사의 환영 페이지를 열람합니다.

Filename

파일에 내려받기: 지역적으로 생성될 파일의 이름을 지정합니다. 절대 경로가 지정되지 않으면 %A_WorkingDir%에 있다고 간주됩니다. 기존의 파일은 이 새 파일로 덮어쓰기 됩니다.

변수에 내려받기: 아래의 예제를 참조하십시오.

에러 처리

[v1.1.04+]: 이 명령어는 실패하면 예외를 던질 수 있습니다. 더 자세한 정보는 실행시간 에러를 참조하십시오.

ErrorLevel은 문제가 있으면 1, 그렇지 않으면 0이 설정됩니다.

논평

원격 파일이 존재하지 않더라도 내려받기는 마치 성공한 것처럼 보일 수 있습니다. 많은 웹 서버가 실패한 파일 대신에 에러 페이지를 보내기 때문입니다. 이 에러 페이지가 Filename 대신에 저장될 것입니다.

Internet Explorer 3 이상은 설치해야 이 기능이 작동합니다. 방화벽이나 여러 네트워크 어댑터 때문에 이 기능이 작동하지 않을 수 있습니다. 또, 어떤 웹 사이트는 이런 식의 내려받기를 금지하기도 합니다.

Caching:

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 형식으로 얻습니다.

FileRead, FileCopy

예제

Downloads a text file.

UrlDownloadToFile, https://www.autohotkey.com/download/1.1/version.txt, C:\AutoHotkey Latest Version.txt

Downloads a zip file.

UrlDownloadToFile, https://someorg.org/archive.zip, C:\SomeOrg's Archive.zip

텍스트를 변수에 내려받습니다.

whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
whr.Open("GET", "https://www.autohotkey.com/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", "https://www.autohotkey.com/download/1.1/version.txt", true)
; Set our callback function [requires 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) ; OK.
        MsgBox % "Latest AutoHotkey version: " req.responseText
    else
        MsgBox 16,, % "Status " req.status
    ExitApp
}