Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » подскажите функции для работы с ftp

Страниц (1): [1]
 

1. AdryV - 15 Июля, 2019 - 06:33:56 - перейти к сообщению
в общем нужно редактировать файлы на ftp сервере, как это все провернуть
что бы попасть на ftp нужно ввести адрес, логин, пароль.
далее на ftp найти файл по названию(или же просто открыть)
прочитать содержимое файла
отредактировать
сохранить и записать обратно на ftp
завершить соединение
2. Zireael - 15 Июля, 2019 - 06:40:02 - перейти к сообщению
Пример как скачать файл:
CODE:
external(INT, "InternetOpen", "InternetOpenA", "Wininet.dll" );
external(INT, "InternetCloseHandle", "InternetCloseHandle", "Wininet.dll" );
external(INT, "InternetConnect", "InternetConnectA", "Wininet.dll" );
external(INT, "FtpSetCurrentDirectory", "FtpSetCurrentDirectoryA", "Wininet.dll" );
external(INT, "FtpGetFile", "FtpGetFileA", "Wininet.dll" );

int open, _close, connect, file, catalog;

string ftp="zireael.zzz.com.ua"; // фтп, исправить на свой
string login="логин"; // исправить на свой
string pass="пароль"; // исправить на свой

open=InternetOpen("Microsoft Internet Explorer", 0, 0, 0, 0);
connect=InternetConnect(open, ftp, 21, login, pass, 1, 134217728, 0);
catalog=FtpSetCurrentDirectory(connect, ftp);
file=FtpGetFile(connect, "time.txt", "time.txt", 0, 0, 0); // скачать файл time.txt в папку с кибор
_close=InternetCloseHandle(connect);

Всё остальное примерно также.
3. AdryV - 15 Июля, 2019 - 07:49:10 - перейти к сообщению
где может быть нюанс?
у меня почти все параметры равны 0
 Zireael пишет:
open=какоето число.... чет тип (134217728 но значение меньше....)
connect=0
catalog=0
file=0

(Добавление)
вот как настроено в тотал коммандер(для просмотра ссылки Вам необходимо авторизоваться)
4. Dantes3000 - 15 Июля, 2019 - 09:03:27 - перейти к сообщению
AdryV , всё что угодно может быть. Чтобы узнать текст ошибки - надо отдельно функции вызывать.
5. AdryV - 15 Июля, 2019 - 09:14:42 - перейти к сообщению
ну логически если функция вызывается правильно будет из нее возвращать 1(типа удача)
но мне почему то возвращают 0..... хотя думаю что параметры вызова функции правильные....
мож у этих функций есть чет типа дебаг режима.... что бы отследить. Подмигивание
всем спс за помощь Подмигивание
6. Kibor - 15 Июля, 2019 - 09:24:30 - перейти к сообщению
Подробнее о WinInet
тут надо читать или еще где то про WinInet
7. Zireael - 15 Июля, 2019 - 18:06:07 - перейти к сообщению
 Цитата:
мож у этих функций есть чет типа дебаг режима.... что бы отследить.

InternetGetLastResponseInfoA.
CODE:
external(INT, "InternetOpen", "InternetOpenA", "Wininet.dll" );
external(INT, "InternetCloseHandle", "InternetCloseHandle", "Wininet.dll" );
external(INT, "InternetConnect", "InternetConnectA", "Wininet.dll" );
external(INT, "FtpSetCurrentDirectory", "FtpSetCurrentDirectoryA", "Wininet.dll" );
external(INT, "FtpGetFile", "FtpGetFileA", "Wininet.dll" );

external(INT, "InternetGetLastResponseInfo", "InternetGetLastResponseInfoA", "Wininet.dll" );

int open, _close, connect, file, catalog;
string ftp="zireael.zzz.com.ua"; // фтп, исправить на свой
string login="1111"; // исправить на свой
string pass="2222"; // исправить на свой

char c[9999];
int error, size_c=sizearray(c);
open=InternetOpen("Microsoft Internet Explorer", 0, 0, 0, 0);
if(open)
{
connect=InternetConnect(open, ftp, 21, login, pass, 1, 134217728, 0);
if(connect==0)
{
InternetGetLastResponseInfo(address(#error), address(#c[0]), address(#size_c));
messagebox(format(#c[0], size_c));
}
_close=InternetCloseHandle(connect);
}

В данном случае напишет что не выполнен вход, потому что логин и пароль неправильные.

Если будет где потестить, то могу посмотреть что не работает.
8. AdryV - 16 Июля, 2019 - 01:34:49 - перейти к сообщению
в общем разобрался помогла функция) InternetGetLastResponseInfo
 Zireael пишет:
catalog=FtpSetCurrentDirectory(connect, ftp);

тут я не правильно указывал путь к самому каталогу где лежит файл time.txt
у меня путь к рабочей папке идет чет типа этого
/domains/сайт.xsph.ru/public_html/write_read/pc_id/
а если писать путь ftp+"/domains/сайт.xsph.ru/public_html/write_read/pc_id/" это уже не правильно.

 Zireael пишет:
file=FtpGetFile(connect, "time.txt", "time.txt", 0, 0, 0); // скачать файл time.txt в папку с кибор

тут нужно указывать путь где сохранить файл просто time.txt не сохраняет в папке с кибор ахз где он девается
file=FtpGetFile(connect, "time.txt", "c:\time.txt", 0, 0, 0);
так заработало

всем спасиб Подмигивание

Powered by ExBB FM 1.0 Final