|
FTP - ....
|
|||
---|---|---|---|
#18+
Для работы с фтп использую wininet.dll. Возникла проблемка получить список файлов на фтп (из указаной папки). Буду благодарен за помощь. pb 10.2 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2008, 13:24 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
MykolaДля работы с фтп использую wininet.dll. Возникла проблемка получить список файлов на фтп (из указаной папки). Буду благодарен за помощь. pb 10.2 Тут есть такая ф-я. Сам не юзал. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2008, 13:56 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
Я реализовывал, но использовал wodftpdlx Он гораздо удобнее ----------------------------------------------------------------------------- Главная деталь любой машины - голова ее владельца ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2008, 14:36 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
комрад, вот тебе писЧдля размышлений, надеюсь поможет: local external functions: // wininet functions FUNCTION ulong InternetOpenA( string szAgent, ulong dwAccessType, string szProxy, string szProxyBypass, ulong dwFlags ) LIBRARY "wininet.dll" FUNCTION ulong InternetConnectA( ulong hInternet, string szServerName, uint nServerPort, string szUserName, string szPassword, ulong dwService, ulong dwFlags, ulong dwContext ) LIBRARY "wininet.dll" FUNCTION boolean InternetCloseHandle( ulong hInternet ) LIBRARY "wininet.dll" //FUNCTION boolean InternetGetLastResponseInfoA( REF ulong lpdwError, REF string lpszBuffer, REF ulong lpdwBufferLength ) LIBRARY "wininet.dll" //FUNCTION boolean InternetGetConnectedState( REF ulong lpdwFlags, ulong dwReserved ) LIBRARY "wininet.dll" //FUNCTION boolean InternetAutodial( ulong dwFlags, ulong dwReserved ) LIBRARY "wininet.dll" //FUNCTION boolean InternetAutodialHangup( ulong dwReserved ) LIBRARY "wininet.dll" //FUNCTION ulong InternetDial( ulong hwndParent, string szConnectId, ulong dwFlags, REF ulong dwConnection, ulong dwReserved ) LIBRARY "wininet.dll" //FUNCTION ulong InternetHangup( ulong dwConnection, ulong dwReserved ) LIBRARY "wininet.dll" //FUNCTION boolean InternetSetOptionA( ulong hInternet, ulong dwOption, string lpBuffer, ulong dwBufferLength ) LIBRARY "wininet.dll" //FUNCTION boolean InternetCheckConnectionA( string lpUrl, ulong dwFlags, ulong dwReserved ) LIBRARY "wininet.dll" //FUNCTION ulong InternetOpenUrlA( ulong hInternet, string lpUrl, string lpHeaders, ulong dwHeadersLength, ulong dwFlags, ulong dwContext ) LIBRARY "wininet.dll" // wininet ftp functions //FUNCTION boolean FtpDeleteFile( ulong hSession, string lpszFileName ) LIBRARY "wininet.dll" FUNCTION boolean FtpCreateDirectoryA( ulong hSession, string lpszDirectory ) LIBRARY "wininet.dll" //FUNCTION ulong FtpFindFirstFileA( ulong hSession, string szSearchFile, REF os_finddata lpvData, ulong dwFlags, ulong dwContext ) LIBRARY "wininet.dll" //FUNCTION boolean FtpGetFileA( ulong hService, string szRemoteFile, string szLocalFile, boolean bFailIfExist, ulong dwLocalFlags, ulong dwInetFals, ulong dwContext ) LIBRARY "wininet.dll" FUNCTION boolean FtpPutFileA( ulong hService, string szLocalFile, string szRemoteFile, ulong dwFlags, ulong dwContext ) LIBRARY "wininet.dll" FUNCTION boolean FtpGetCurrentDirectoryA( ulong hService, REF string szPath, REF ulong lpdwBuffLength ) LIBRARY "wininet.dll" //FUNCTION boolean FtpRemoveDirectory( ulong hSession, string lpszDirectory ) LIBRARY "wininet.dll" //FUNCTION boolean FtpRenameFile( ulong hSession, string lpszExisting, string lpszNew ) LIBRARY "wininet.dll" FUNCTION boolean FtpSetCurrentDirectoryA( ulong hService, string szPath ) LIBRARY "wininet.dll" //FUNCTION ulong FtpOpentFileA( ulong hSession, string szFileName, ulong dwAccess, ulong dwFlags, ulong dwContext ) LIBRARY "wininet.dll" //FUNCTION boolean InternetFindNextFileA( ulong hFind, REF os_finddata lpvData ) LIBRARY "wininet.dll" // windows functions //FUNCTION boolean FileTimeToSystemTime(ref os_filedatetime lpFileTime, ref os_systemtime lpSystemTime) library "KERNEL32.DLL" //FUNCTION boolean FileTimeToLocalFileTime(ref os_filedatetime lpFileTime, ref os_filedatetime lpLocalFileTime) library "KERNEL32.DLL" FUNCTION ulong GetLastError() LIBRARY "kernel32.dll" /***********************************************************************************************/ fw_ftp_report: string s_logon, s_password_a, s_ftp_address, s_cd_directory, s_file_name_a application a_app ULong lul_buflen string s_null long l_internet, l_session, l_mode int INTERNET_OPEN_TYPE_PRECONFIG int INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4 int INTERNET_DEFAULT_FTP_PORT = 21 int INTERNET_SERVICE_FTP = 1 int FTP_TRANSFER_TYPE_ASCII = 1 int FTP_TRANSFER_TYPE_BINARY = 2 long INTERNET_FLAG_PASSIVE = 134217728 lul_buflen = 256 SetNull(s_null) // Open Internet ... a_app = GetApplication() l_internet = InternetOpenA(a_app.AppName, INTERNET_OPEN_TYPE_PRECONFIG, s_null, s_null, 0) IF IsNull(l_internet) OR l_internet = 0 THEN RETURN 'Error: InternetOpenA' END IF s_logon = dw_1.GetItemString(a_l_curr_rpw, 'logon') s_password_a = dw_1.GetItemString(a_l_curr_rpw, 'password_a') s_ftp_address = dw_1.GetItemString(a_l_curr_rpw, 'ftp_address') s_cd_directory = dw_1.GetItemString(a_l_curr_rpw, 'cd_directory') s_file_name_a = dw_1.GetItemString(a_l_curr_rpw, 'file_name_a') s_file_name_a = a_s_assoc_name + ' - ' + Mid(s_file_name_a, 1, Pos(lower(s_file_name_a), '.pdf')) + ' - ' + i_s_today + '.pdf' // Connect ... l_session = InternetConnectA(l_internet, s_ftp_address, INTERNET_DEFAULT_FTP_PORT, s_logon, s_password_a, & INTERNET_SERVICE_FTP, 0, 0) //INTERNET_FLAG_PASSIVE, 0) IF IsNull(l_session) OR l_session = 0 THEN InternetCloseHandle(l_session) RETURN 'Error: InternetConnectA' END IF IF NOT IsNull(s_cd_directory) THEN IF NOT FtpSetCurrentDirectoryA(l_session, s_cd_directory) THEN IF NOT FtpCreateDirectoryA(l_session, s_cd_directory) THEN RETURN 'Error: FtpCreateDirectoryA' ELSE IF NOT FtpSetCurrentDirectoryA(l_session, s_cd_directory) THEN RETURN 'Error: FtpSetCurrentDirectoryA' END IF END IF END IF END IF // Send ... //l_mode = FTP_TRANSFER_TYPE_ASCII l_mode = FTP_TRANSFER_TYPE_BINARY // ar_s_file_name is the local file... // s_file_name_a is the new remote file... IF NOT FtpPutFileA(l_session, ar_s_file_name, s_file_name_a, l_mode, 0) THEN InternetCloseHandle(l_session) RETURN 'Error: FtpPutFileA' END IF // Close ... IF NOT InternetCloseHandle(l_session) THEN RETURN 'Error: InternetCloseHandle' END IF RETURN '' ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2008, 23:23 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyMykolaДля работы с фтп использую wininet.dll. Возникла проблемка получить список файлов на фтп (из указаной папки). Буду благодарен за помощь. pb 10.2 Тут есть такая ф-я. Сам не юзал. Кто-нибудь пытался использовать FtpFindFirstFileA в PowerBuilder'е. У меня PB виснет при ее вызове, в т.ч. и пример по ссылке. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2009, 18:18 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
При этом, если на локальном ftp смотреть, то все нормально ищется, а на удаленном - виснет... хотя через FAR там все нормально отображается... Кстати вот пример работы с FTP без PFC. Он тоже виснет при попытке просмотра того FTP... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2009, 18:29 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
А на соседнем компьютере все работает без проблем... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2009, 18:35 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
Думаю проблема в региональных настройках. Дело в том что многие FTP сервера в листинге файлов выдают даты и числа в зависимом от локали формате. Соответственно, клиенты могут их распарсить только если у них тот же формат дат и чисел либо если они в курсе этой проблемы и умеют ее обходить. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2009, 18:47 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
Ну, еще может быть проблема что на том компе где виснет, фаерволом не разрешены входящие соединения на 20 порт, по которому данные передаются. Если библиотека позволяет, примените пассивный режим FTP. В этом случае клиент сам устанавливает второе соединение. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2009, 18:50 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyНу, еще может быть проблема что на том компе где виснет, фаерволом не разрешены входящие соединения на 20 порт, по которому данные передаются. Если библиотека позволяет, примените пассивный режим FTP. В этом случае клиент сам устанавливает второе соединение. Действительно, PowerBuilder блокировался брандмауэром, при этом никаких сообщений о попытке доступа к порту не возникало, и программа просто зависала, в тоже время скомпилированный exe файл при запуске выдавал стандартный запрос брандмауэра типа "программа пытается получить доступ...". Добавление PowerBuilder в список исключений решило проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2009, 09:21 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyMykolaДля работы с фтп использую wininet.dll. Возникла проблемка получить список файлов на фтп (из указаной папки). Буду благодарен за помощь. pb 10.2 Тут есть такая ф-я. Сам не юзал. Кстати, в этой библиотеке есть утечка ресурсов при вызове функций для поиска файлов - не возвращается указатель на последовательность поиска возвращенный FtpFindFirstFile (нет вызова функции InternetCloseHandle) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2009, 09:35 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
С конектом ясно,а как зааплодить файл по фтп в инете не нашел ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2010, 12:13 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
ZmiterС конектом ясно,а как зааплодить файл по фтп в инете не нашел ? FtpPutFileA, примеры реализации - по ссылкам в теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2010, 12:39 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
А с папками при копировании как быть.По умолчанию корневая папка фтп,а если подпапки есть,полный путь надо.Что то фалсе врзвращвет копировалка boolean lb string ls_ftp,ls ls_ftp=sle_1.text+"/Utb/"+is_file lb= FtpPutFileA( l_internet, is_path, ls_ftp, 0,0) is_file имя файла is_path путь локальный путь файла ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2010, 14:53 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
ZmiterА с папками при копировании как быть.По умолчанию корневая папка фтп,а если подпапки есть,полный путь надо.Что то фалсе врзвращвет копировалка Ну Вы как маленький, сами не можете посмотерть какие функции есть? FtpSetCurrentDirectoryA ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2010, 15:23 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
а есть этого пример,что то у меня не карентится она.Сразу так и попробовал ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2010, 15:41 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
Zmiterа есть этого пример,что то у меня не карентится она.Сразу так и попробовал Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2010, 16:03 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
Локшин МаркZmiterа есть этого пример,что то у меня не карентится она.Сразу так и попробовал Код: plaintext
Что то не вижу такого,где вы это тут нашли ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2010, 17:29 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
ZmiterЛокшин МаркZmiterа есть этого пример,что то у меня не карентится она.Сразу так и попробовал Код: plaintext
Что то не вижу такого,где вы это тут нашли Это строчка из моего проекта - пример вызова, вызывается функция из библиотеки по первой ссылки. Андерстенд? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2010, 17:54 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
ls_dir="/UTB" lb=FtpSetCurrentDirectoryA( l_internet,ls_dir ) Возвращает фалсе,соединение по фтп уже есть,в чем нюанс ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2010, 08:48 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
тупанул long l_session, l_mode int INTERNET_OPEN_TYPE_PRECONFIG int INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4 int INTERNET_DEFAULT_FTP_PORT = 21 int INTERNET_SERVICE_FTP = 1 int FTP_TRANSFER_TYPE_ASCII = 1 int FTP_TRANSFER_TYPE_BINARY = 2 long INTERNET_FLAG_PASSIVE = 134217728 lul_buflen = 256 SetNull(s_null) // Open Internet ... a_app = GetApplication() l_internet = InternetOpenA(a_app.AppName, INTERNET_OPEN_TYPE_PRECONFIG, s_null, s_null, 0) IF IsNull(l_internet) OR l_internet = 0 THEN messagebox("Ошибка", "Нет инета") END IF l_session=InternetConnectA(l_internet,ls_server,INTERNET_DEFAULT_FTP_PORT, s_logon, s_password,INTERNET_SERVICE_FTP, 0, 0),возвращает 0,21 порт открыт не коннектится,дело происходит в локалке,что не так ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2010, 09:23 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
Хочу подключится под анонимусом пока. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2010, 09:24 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
Скачал зип по ссылке выше,разбираюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2010, 09:53 |
|
FTP - ....
|
|||
---|---|---|---|
#18+
Как записывать и удалять понятно.А чем лучше скачивать или запускать файлы с фтп,что не получется не ридом не опен ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2010, 11:29 |
|
|
start [/forum/topic.php?fid=15&fpage=24&tid=1335890]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 165ms |
0 / 0 |