Всем привет.
Хочу скачивать файл из интернета. У меня это получилось сделать. Но хотелось бы видеть процесс скачивания файла (интернет везде разный, как и размер файла). Сейчас этого не видно. Как это можно реализовать ?
Как получить процесс получения файлов ?
-
Sergey Ivanov
- expert
- Сообщения: 1217
- Зарегистрирован: 01 мар 2009, 20:54
- Награды: 5
- Версия LabVIEW: 2018
- Откуда: Санкт-Петербург, Кронштадт
- Благодарил (а): 11 раз
- Поблагодарили: 1 раз
- Контактная информация:
Как получить процесс получения файлов ?
Последний раз редактировалось Sergey Ivanov 09 фев 2015, 14:22, всего редактировалось 2 раза.
Добро пожаловать на http://rk-stud.ru/
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Как получить процесс получения файлов ?
Может, сначала делать "DataSocket Open", а потом "Read", "Read", "Read"?
-
Sergey Ivanov
- expert
- Сообщения: 1217
- Зарегистрирован: 01 мар 2009, 20:54
- Награды: 5
- Версия LabVIEW: 2018
- Откуда: Санкт-Петербург, Кронштадт
- Благодарил (а): 11 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Как получить процесс получения файлов ?
так если я так сделаю, то как я узнаю когда мне остановить чтение ? я же не могу узнать размер скачиваемого файла и не могу задать количество скачиваемых байт за раз.
Добро пожаловать на http://rk-stud.ru/
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Как получить процесс получения файлов ?
Sergey Ivanov, как раз размер файла вам и нужен. А также нужен Event, передающий в программу число загруженных байт. Размер можно получить запросом HEAD, например, так. Есть и отдельный для этого: http://zone.ni.com/reference/en-XX/help ... ient_head/ А вот эвент, насколько знаю, можно создать через ActiveX. Посмотрите пример C:\Program Files (x86)\National Instruments\LabVIEW 2013\examples\Connectivity\ActiveX\ActiveX Event Callback.vi. Там же можно попробовать другие эвенты, возможно, вам понадобятся DownloadBegin, DownloadComplete, ProgressChange. Посмотрите ещё в поиске по такому запросу.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Как получить процесс получения файлов ?
Заинтересовала меня тема ТС, т.к. я в своё время делал простенький download manager на Delphi с помощью компонентов Indy и Synapse. Решил попробовать сделать аналогичное на . Но не тут-то было. В сообщении выше я немного поспешил, как оказалось, IE'шный компонент WebBrowser не подходит для скачки файлов. Во-первых, выдаёт каждый раз диалоговое окно для сохранения файла и весь процесс скачки выполняется в нём. Это никак не настроить. Во-вторых, грузит установленные плагины/аддоны, такие как Flash Player и Adobe PDF, в результате pdf файл открывается в Adobe PDF Reader'е прямо в окне компонента. И контроль над загрузкой файла в уже не получить. И в-третьих, индикатор прогресса меняется при загрузке каждого элемента, если это web-страница, то он будет скакать при загрузке каждой картинки, скрипта, html, css.
На удивление, никаких нормальных решений для скачки с прогресс баром для нет. Попадались старые OpenG HTTP, которые уже не работают, так и не понял, что с ними не так. Есть дополнение Internet Toolkit для LabVIEW 2011/2012, построенное на TCP инструментах . Посмотрев на внутренности, я решил ничего там не менять, ибо муторно, долго и не факт, что заработает. Ещё пара решений с форума NI тоже оказалась на TCP , и тоже корректно не работала. А если создавать download manager на TCP, на это могут уйти дни, а то и недели.
Поискав, наткнулся на консольную утилиту WGet. Вроде бы, всё что нужно, присутствует. И файлы способна качать, и выводит прогресс. Однако вывод идёт в консоль, а библиотек к ней нет. Так что ещё в LabVIEW нужно с консолью взаимодействовать - опять дополнительные сложности. Я почти сдался, подумав, что некоторые вещи на LabVIEW не реализовать. То, что в Delphi или C/C++ делалось парой строк кода, здесь оказалось невозможным.
И вдруг наткнулся на решение на .NET. Довольно несложный код, и я набросал в его за пару часов. Получился он малось вытянутым в графическом плане, но довольно функциональным. Что интересно, всё сразу заработало после нажатия Run. Файл сразу же начал загружаться и прогресс бар стабильно отобразил полосу загрузки. В качестве иллюстрации скрин панели: Так что, можно сказать, задача оказалась выполнена на 100% И как вывод - даже в нет невозможных вещей, нужно лишь приложить достаточно усилий.
P.S. Тестовые файлы разных размеров для проверки закачки можно взять здесь.
На удивление, никаких нормальных решений для скачки с прогресс баром для нет. Попадались старые OpenG HTTP, которые уже не работают, так и не понял, что с ними не так. Есть дополнение Internet Toolkit для LabVIEW 2011/2012, построенное на TCP инструментах . Посмотрев на внутренности, я решил ничего там не менять, ибо муторно, долго и не факт, что заработает. Ещё пара решений с форума NI тоже оказалась на TCP , и тоже корректно не работала. А если создавать download manager на TCP, на это могут уйти дни, а то и недели.
Поискав, наткнулся на консольную утилиту WGet. Вроде бы, всё что нужно, присутствует. И файлы способна качать, и выводит прогресс. Однако вывод идёт в консоль, а библиотек к ней нет. Так что ещё в LabVIEW нужно с консолью взаимодействовать - опять дополнительные сложности. Я почти сдался, подумав, что некоторые вещи на LabVIEW не реализовать. То, что в Delphi или C/C++ делалось парой строк кода, здесь оказалось невозможным.
И вдруг наткнулся на решение на .NET. Довольно несложный код, и я набросал в его за пару часов. Получился он малось вытянутым в графическом плане, но довольно функциональным. Что интересно, всё сразу заработало после нажатия Run. Файл сразу же начал загружаться и прогресс бар стабильно отобразил полосу загрузки. В качестве иллюстрации скрин панели: Так что, можно сказать, задача оказалась выполнена на 100% И как вывод - даже в нет невозможных вещей, нужно лишь приложить достаточно усилий.
P.S. Тестовые файлы разных размеров для проверки закачки можно взять здесь.
- Вложения
-
- Http_Downloader.vi
- LV2011
- (31.82 КБ) 278 скачиваний
-
Sergey Ivanov
- expert
- Сообщения: 1217
- Зарегистрирован: 01 мар 2009, 20:54
- Награды: 5
- Версия LabVIEW: 2018
- Откуда: Санкт-Петербург, Кронштадт
- Благодарил (а): 11 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Как получить процесс получения файлов ?
Спасибо за пример !
Немножко обновил его, добавил скорость )
Немножко обновил его, добавил скорость )
- Вложения
-
- Http_Downloader.vi
- (23.38 КБ) 311 скачиваний
Добро пожаловать на http://rk-stud.ru/