Можно ли использовать поток adodb для больших файлов, используя предварительно выделенные фрагменты? - PullRequest
0 голосов
/ 31 января 2019

В настоящее время я использую comobject adodb.stream для получения очень больших файлов (несколько гигабайт) из archive.org как аутентифицированного пользователя и, следовательно, получаю ошибку нехватки памяти во время выделения.Есть ли способ использовать adodb.stream для установки размера чанка и добавления / объединения в выходной файл?
Альтернативные решения приветствуются.
Здесь я использую AHKscript:

file_save_location := save
Overwrite := True
get_site := "https://archive.org/download/file.zip"  ;;multi-gb file
post_site :="https://archive.org/account/login.php"
post_data :="username=" username_str "&password=" password_str "&remember=CHECKED&referer=https://archive.org&action=login&submit=Log in"
WebRequest := ComObjCreate( "WinHttp.WinHttpRequest.5.1" )
WebRequest.Open("POST", post_site)
WebRequest.SetRequestHeader("Content-Type", "application / zip, application / octet - stream""application / zip, application / octet - stream")
WebRequest.SetRequestHeader("Cookie", "test-cookie=1")
WebRequest.SetRequestHeader("Accept-Encoding","gzip,deflate,sdch")
WebRequest.Send(post_data)
WebRequest.Open("HEAD",get_site)
WebRequest.Send()
WebRequest.Open("GET",get_site)
WebRequest.Send()
ADODBObj := ComObjCreate( "ADODB.Stream" )
ADODBObj.Type := 1
ADODBObj.Open()
;;ADODBObj.Position := 0  ;;getting warm
ADODBObj.Write( WebRequest.ResponseBody )
ADODBObj.SaveToFile(file_save_location, Overwrite ? 2:1)
ADODBObj.Close()
ADODBObj:=""
WebRequest:=""
...