Что нового

Скачивание файлов

Tuxzer92

Новичок
Сообщения
65
Репутация
0
Есть скрипт, который качает файлы по ссылкам.
Код:
Global $ArrayFileName[9]=[ _
  "memtest86-iso.zip", _
  "v35fdd.zip", _
  "mhdd32ver4.6iso.zip", _
  "TinyCore-current.iso", _
  "slitaz-rolling-core.iso", _
  "pra03-1608middle.iso", _
  "systemrescuecd-x86-5.2.2.iso", _
  "clonezilla-live-2.5.5-38-amd64.zip", _
  "gparted-live-0.31.0-1-amd64.iso"]
Global $ArrayFileURL[9]=[ _
   "https://www.memtest86.com/downloads/memtest86-iso.zip", _
   "http://www.ihdd.ru/download/software/victoria/v35fdd.zip", _
   "http://www.ihdd.ru/download/software/mhdd/mhdd32ver4.6iso.zip", _
   "http://www.tinycorelinux.net/9.x/x86/release/TinyCore-current.iso", _
   "http://distro.ibiblio.org/slitaz/iso/rolling/slitaz-rolling-core.iso", _
   "https://mirror.yandex.ru/puppyrus/puppyrus-a/pra03/iso/1608/pra03-1608middle.iso", _
   "https://sourceforge.net/projects/systemrescuecd/files/sysresccd-x86/5.2.2/systemrescuecd-x86-5.2.2.iso", _
   "https://osdn.net/frs/redir.php?m=cznic&f=clonezilla%2F69273%2Fclonezilla-live-2.5.5-38-amd64.zip", _
   "https://sourceforge.net/projects/gparted/files/gparted-live-stable/0.31.0-1/gparted-live-0.31.0-1-amd64.iso"]

$string = ""

For $i In $ArrayFileURL
   $id = Download($ArrayFileURL[$i], $ArrayFileName[$i])
   While InetGetInfo($id,2) = True
	  InetGetInfo($id,0)
	  If InetGetInfo($id,2)= False Then
		 MsgBox(0,"","Error")
	  EndIf
   WEnd
Next
MsgBox(4096, "", "Результат: " & @CRLF & $id)

Func Download($ArrayFileURL, $ArrayFileName)
   $FileSaveLocation = @ScriptDir & "\" & $ArrayFileName
   $FileSize = InetGetSize($ArrayFileURL)
   if $FileSize = 0 Then
	  MsgBox(0,"","Не удалось получить размер файла!")
	  Exit
   EndIf
   $FileDownload = InetGet($ArrayFileURL, $FileSaveLocation, 1,1)

   ProgressOn("", "", "", -1)
   Do
	  $Percentage = InetGetInfo($FileDownload, 0) * 100 / $FileSize
      ProgressSet($Percentage, Round($Percentage, 0) & "% Загружено " & Round(InetGetInfo($FileDownload, 0) / 1048576, 2) & " из " & Round($FileSize / 1048576, 2) & " MB", "Загрузка")
      Sleep(250)
   Until InetGetInfo($FileDownload, 3)
   If @error Then
	  Exit
   EndIf
   ProgressOff()
EndFunc

Но он качает только первый файл все время. Как сделать так чтобы он качал все файлы по порядку?
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Код:
;либо
For $i In $ArrayFileURL
   $id = Download($i)
   ;.....
Next

;либо
For $i=0 To UBound($ArrayFileURL)-1
   $id = Download($ArrayFileURL[$i])
   ;.....
Next
 
Автор
T

Tuxzer92

Новичок
Сообщения
65
Репутация
0


Добавлено:
Сообщение автоматически объединено:

hedji сказал(а):
Код:
;либо
For $i In $ArrayFileURL
   $id = Download($i)
   ;.....
Next

;либо
For $i=0 To UBound($ArrayFileURL)-1
   $id = Download($ArrayFileURL[$i])
   ;.....
Next
Но у меня функция вызывается с двумя аргументами.
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Т.к. массивы одинакового размера, то второй вариант:
Код:
For $i=0 To UBound($ArrayFileURL)-1
   $id = Download($ArrayFileURL[$i], $ArrayFileName[$i])
   ;.....
Next
 
Автор
T

Tuxzer92

Новичок
Сообщения
65
Репутация
0
hedji сказал(а):
Т.к. массивы одинакового размера, то второй вариант:
Код:
For $i=0 To UBound($ArrayFileURL)-1
   $id = Download($ArrayFileURL[$i], $ArrayFileName[$i])
   ;.....
Next
Спасибо. Работает. Еще один вопросик. Если я меняю ссылку(если файл станет не доступен), то InetGetSize все равно показывает размер файла, хотя я изменил ссылку и он должен выдать ошибку, а он качает http страницу.
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Я не очень в этом сведущ, но предположу, что при неправильной ссылке web-сервер отдает вам страницу к кодом ошибки, размер этой страницы и показывает InetGetSize.
Попробуйте вручную открыть неправильную ссылку в браузере, посмотрите что открылось.
 
Автор
T

Tuxzer92

Новичок
Сообщения
65
Репутация
0
hedji сказал(а):
Я не очень в этом сведущ, но предположу, что при неправильной ссылке web-сервер отдает вам страницу к кодом ошибки, размер этой страницы и показывает InetGetSize.
Попробуйте вручную открыть неправильную ссылку в браузере, посмотрите что открылось.
Да, открывается страница. Странно, как тогда проверять?))
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Качать то, что качается и проверять расширение скачанного файла, если оно не .iso .zip, значит ошибка.
Перемещать и переименовывать уже после проверки.
 
Автор
T

Tuxzer92

Новичок
Сообщения
65
Репутация
0
hedji сказал(а):
Качать то, что качается и проверять расширение скачанного файла, если оно не .iso .zip, значит ошибка.
Перемещать и переименовывать уже после проверки.
Спасибо. Выбрал вариант с проверкой md5 суммы.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Обычно, когда файла больше нет появляется ошибка 404. А при появлении этой ошибки мне выдавалась ошибка и ничего не скачивалось.
 
Верх