Страница 1 из 2

Чтение открытие файла по сети

Добавлено: 14 янв 2016, 15:35
Aleksey Feoktistov
Добрый день!
файл на ходится по адресу https:\192.168.0.1\FileBrowser\Download?Path=\DataLogs\DataLog.csv
и нужно его прочитать через LabVIEW.
Какая функция позволяет открыть файл расположенный в сети?

Re: Чтение открытие файла по сети

Добавлено: 14 янв 2016, 15:48
dadreamer
Data Communication -> Protocols -> HTTP Client -> GET.vi
В конце URL надо добавить [text]

Re: Чтение открытие файла по сети

Добавлено: 17 янв 2016, 10:50
Aleksey Feoktistov
Соединение устанавливается. ошибок нет.
логин и пароль не требуется (я его убрал)
А как сам файл открыть или прочитать?
Безымянный.png
Безымянный.png (7.83 КБ) 12982 просмотра

Re: Чтение открытие файла по сети

Добавлено: 17 янв 2016, 11:55
IvanLis
Aleksey Feoktistov писал(а):Соединение устанавливается. ошибок нет.
Алексей, посмотрите в теме: http://www.labviewportal.org/viewtopic.php?t=6431
Там при работе клиента, скачивается файл с сервера данных.

Re: Чтение открытие файла по сети

Добавлено: 17 янв 2016, 13:05
Aleksey Feoktistov
Иван, я так понимаю, в примере работа идет по протоколу TCP?
Безымянный.png
Какой subVI отвечает за чтение файла?

Re: Чтение открытие файла по сети

Добавлено: 17 янв 2016, 13:19
IvanLis
Aleksey Feoktistov писал(а):Иван, я так понимаю, в примере работа идет по протоколу TCP?
Какой subVI отвечает за чтение файла?
HTTP относится к семейству TCP/IP, это надстройка над ним.

Содержимое файла по идее должно быть в HTTP Response SubVI, которую Вы показали на скрине, в текстовом виде.
А вот что делать потом с этим содержимым, решать Вам.

Re: Чтение открытие файла по сети

Добавлено: 17 янв 2016, 13:25
dadreamer
Aleksey Feoktistov писал(а):Соединение устанавливается. ошибок нет.
логин и пароль не требуется (я его убрал)
А как сам файл открыть или прочитать?
Вложение Безымянный.png больше недоступно
По-моему, здесь всё просто. Параметр body - это файл в бинарном представлении.

Re: Чтение открытие файла по сети

Добавлено: 17 янв 2016, 14:36
Aleksey Feoktistov
Похоже проблема в том, что я не правильно указываю путь (до сих пор не нашел правильную ссылку)
Безымянный.png
файл весит 2 Мб и приходит в body намного меньше
Если указываю ссылку http:\192.168.0.2\FileBrowser\Download?Path=\DataLogs\DataLog.csv
то вообще ничего не приходит и headers =

Код: Выделить всё

HTTP/1.1 302 Object Moved
Content-Type:text/html
Content-Length:0
Location: http://192.168.0.2/Portal/Portal.mwsl?PriNav=FileBrowser&Path=/
Date: Thu Feb 16 22:52:17 2012
В общем, буду разбираться

Re: Чтение открытие файла по сети

Добавлено: 17 янв 2016, 15:11
Blackman
Справка для DataSocket функций

To read a text file from an FTP site using DataSocket functions, add [text] to the end of the URL.
To read a text file via the http protocol using DataSocket functions, add [text] to the end of the URL.

Re: Чтение открытие файла по сети

Добавлено: 17 янв 2016, 15:46
Aleksey Feoktistov
загрузил на контроллер картинку в формате *.png и попытался считать её
ситуация та же.
http://192.168.0.2/FileBrowser/Download ... s/cRIO.png

Код: Выделить всё

HTTP/1.1 302 Object Moved
Content-Type:text/html
Content-Length:0
Location: http://192.168.0.2/Portal/Portal.mwsl?PriNav=FileBrowser&Path=/
Date: Sun Jan 17 12:43:10 2016
попробовал такой запрос

Код: Выделить всё

http://192.168.0.2/FileBrowser/Download?Path=/DataLogs/DataLog.csv[text]
тоже не работает

Re: Чтение открытие файла по сети

Добавлено: 17 янв 2016, 16:10
Aleksey Feoktistov
При попытке открыть файл по прямой ссылке через браузер

Код: Выделить всё

http://192.168.0.2/FileBrowser/Download?Path=/DataLogs/DataLog.csv 
выходит сообщение
File operation not permitted - no referrer
Операция с файлом не разрешена - нет реферера

т.е. проблема во внутренней безопасности контролера
осталось придумать как его обмануть

Re: Чтение открытие файла по сети

Добавлено: 17 янв 2016, 16:12
dadreamer
То есть, в браузере обращение по адресу https://192.168.0.1/FileBrowser/Downloa ... ataLog.csv выдаёт файл, а в :labview: нет? Обратите внимание на слэши, в url слэш должен быть везде / (после http(s) два слэша), а в локальных путях - \. Если так, то нужно посмотреть, куда происходит редирект. Проще всего проверить сниффером: Fiddler или Charles. Настройте сниффер, потом откройте в браузере указанный url и смотрите цепь запросов. Ну, и хэдеры тоже полезно глянуть.

upd:
Aleksey Feoktistov писал(а):При попытке открыть файл по прямой ссылке через браузер

Код: Выделить всё

http://192.168.0.2/FileBrowser/Download?Path=/DataLogs/DataLog.csv
выходит сообщение
File operation not permitted - no referrer
А откуда вы взяли этот url? И как и где он работает?

Re: Чтение открытие файла по сети

Добавлено: 17 янв 2016, 16:20
Aleksey Feoktistov
Правильная ссылка вот

Код: Выделить всё

http://192.168.0.2/FileBrowser/Download?Path=/DataLogs/DataLog.csv
При копировании этой ссылки и вставке её в браузере выходит сообщение
File operation not permitted - no referrer
Операция с файлом не разрешена - нет реферера

т.е. в веб странице есть какая-то защита, которая запрещает обращаться к файлам по прямым ссылкам.
ближайшая прямая ссылка

Код: Выделить всё

http://192.168.0.2/FileBrowser/Download?Path=/
затем, нужно с этой страницы перейти сначала на

Код: Выделить всё

http://192.168.0.2/FileBrowser/Download?Path=/DataLogs/
а затем, можно будет нажать на кнопку и перейти по ссылке

Код: Выделить всё

http://192.168.0.2/FileBrowser/Download?Path=/DataLogs/DataLog.csv
ссылка на конечный файл запрограммирована так

Код: Выделить всё

</td></tr><tr><td class="fileBrowserDir">&nbsp;</td><td class='fileBrowserName'><span class='hiddenOnSmall'><a href="/FileBrowser/Download?Path=/DataLogs/DataLog.csv">DataLog.csv</a></span><span class='hiddenOnLarge'><a href="/FileBrowser/Download?Path=/DataLogs/DataLog.csv">DataLog.csv</a></span></td><td class="contentTableField fileSize">1920033</td><td class="contentTableField fbChanged"><span class="systemTime"><span class="fbTime">01:12:20 pm&nbsp;<br class="hiddenOnLarge">&nbsp;1/17/2016</span></span><span class="localTime" style="display: none;"><span class="fbTime">02:12:20 pm&nbsp;<br class="hiddenOnLarge">&nbsp;1/17/2016</span></span></td><td class="contentTableField deleteItem"><form method="GET" action="/FileBrowser/DeleteFile" onsubmit="return Delete('file')"><input type="hidden" name="Path" value="/DataLogs/DataLog.csv" /><input id="img_trash_3" src="../Images/Trash.gif" title="Delete" class="imageButton2" alt="Delete" type="image" ></form></td><td class="contentTableField"><form id='renameForm_3' class='renameForm' action='/FileBrowser/Rename' method='POST'>

Re: Чтение открытие файла по сети

Добавлено: 17 янв 2016, 16:30
Aleksey Feoktistov
теперь надо разобраться как можно реализовать это
https://ru.wikipedia.org/wiki/HTTP_referer

Re: Чтение открытие файла по сети

Добавлено: 17 янв 2016, 16:40
dadreamer
Aleksey Feoktistov писал(а):Правильная ссылка вот

Код: Выделить всё

http://192.168.0.2/FileBrowser/Download?Path=/DataLogs/DataLog.csv
При копировании этой ссылки и вставке её в браузере выходит сообщение
File operation not permitted - no referrer
Операция с файлом не разрешена - нет реферера
Ну, значит, сервер должен установить cookies, чтобы можно было дальше работать. А может не хватает каких-то хэдеров. Обычно сервер сам прописывает cookies, нужно лишь переходить по ссылкам через GET/POST запросы. Посмотрите, какие cookies создаются при переходе по трём указанным ссылкам. Только сперва вычистите старые, чтоб не мешались. В :labview: попробуйте воспроизвести последовательность перехода: сперва зайдите на один url, потом на второй и т.д. Это должно прописать cookies. Полезно перед этим у себя прописать дефолтные заголовки. Пример можно глянуть тут: http://www.labviewportal.org/viewtopic. ... 162#p65162