Войти

Показать полную графическую версию : [решено] Как забрать файл по http?


dedmazai1870
25-03-2015, 20:41
Доброго времени.
В справке команды не нашёл. Можно ли с помощью AutoIt скачивать из интернета файлы?
Задача такая: надо забирать небольшой текстовый файл, адрес примерно такой _http://xxx.yyy.zzz/название.расширение
Браузером забирается, но может есть более элегантное решение отдельной командой?

madmasles
25-03-2015, 20:44
В справке команды не нашёл. »InetRead (http://autoit-script.ru/autoit3_docs/functions/InetRead.htm)()
InetGet (http://autoit-script.ru/autoit3_docs/functions/InetGet.htm)()Кликайте по функциям.
Имя файла получить можно примерно так.$sUrl = 'http://xxx.yyy.zzz/название.расширение'
$sFile = StringTrimLeft (http://autoit-script.ru/autoit3_docs/functions/StringTrimLeft.htm)($sUrl, StringInStr (http://autoit-script.ru/autoit3_docs/functions/StringInStr.htm)($sUrl, '/', 2, -1))
ConsoleWrite (http://autoit-script.ru/autoit3_docs/functions/ConsoleWrite.htm)($sFile & @LF (http://autoit-script.ru/autoit3_docs/macros.htm#@lf))

dedmazai1870
25-03-2015, 21:17
madmasles, InetGet не совсем то, а с InetRead получилось. Дело в том, что файл - это на самом деле ссылка на php-скрипт, и при InetRead я получаю как раз нужный результат его выполнения в окне.
Взял пример из InetRead (http://autoit-script.ru/autoit3_docs/functions/InetRead.htm), подставил свой адрес, всё сработало.
Не сочтите за наглость и чтобы не плодить темы, подскажите: как мне полученный текст выводить не в окно, а сохранять в файл?

Coutty
25-03-2015, 21:26
Ну вот InetGet как раз и сохраняет файл на диск.

madmasles
25-03-2015, 21:29
как мне полученный текст выводить не в окно, а сохранять в файл? »FileOpen (http://autoit-script.ru/autoit3_docs/functions/FileOpen.htm)()
FileWrite (http://autoit-script.ru/autoit3_docs/functions/FileWrite.htm)()
FileClose (http://autoit-script.ru/autoit3_docs/functions/FileClose.htm)()

dedmazai1870
25-03-2015, 21:29
Coutty, при InetGet я получаю в файле такой результат.
<html><body><h1>It works!</h1></body></html>
А при InetRead в окне выводится результат работы скрипта.

dedmazai1870
25-03-2015, 21:47
Хотел заменить
MsgBox(4096, "", "Прочитанных байт: " & $nBytesRead & @CRLF & @CRLF & BinaryToString($sData))
на что-то подобное
FileWrite($hFile, BinaryToString($sData))
пока не получается. Буду пробовать дальше. Если есть идеи, как MsgBox заменить на FileWrite - буду признателен.
Спасибо за помощь.

madmasles
25-03-2015, 22:06
dedmazai1870, Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $sUrl = 'http://Ссылка', $bRead, $sFile = @ScriptDir (http://autoit-script.ru/autoit3_docs/macros.htm#@scriptdir) & '\test.txt', $hFile

$bRead = InetRead (http://autoit-script.ru/autoit3_docs/functions/InetRead.htm)($sUrl, 17)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) @error (http://autoit-script.ru/autoit3_docs/macros.htm#@error) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit) 1
$hFile = FileOpen (http://autoit-script.ru/autoit3_docs/functions/FileOpen.htm)($sFile, 16 + 2)
If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) $hFile = -1 Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit) 2
FileWrite (http://autoit-script.ru/autoit3_docs/functions/FileWrite.htm)($hFile, $bRead)
FileClose (http://autoit-script.ru/autoit3_docs/functions/FileClose.htm)($hFile)

dedmazai1870
26-03-2015, 00:34
madmasles, это чудо! Огромное спасибо!




© OSzone.net 2001-2012