Автор | Сообщение |
|
| |
Пост N: 305
Зарегистрирован: 05.10.06
|
|
Отправлено: 12.05.21 09:23. Заголовок: FTP как получить полную дату и время файла ?
::list() -rw-r--r-- 1 login_1 hosting 17408 Dec 4 09:34 reestr.xls -rw-r--r-- 1 login_1 hosting 24064 Dec 12 2018 rko.xls -rw-r--r-- 1 login_1 hosting 18432 Apr 12 2019 sale.xls -rw-r--r-- 1 login_1 hosting 17408 Apr 19 15:38 schet.xls -rw-r--r-- 1 login_1 hosting 16384 May 11 16:40 sms.xls ::listFiles() reestr.xls 17408 / / 09:34 -rw-r--r-- 1 login_1 hosting rko.xls 24064 12/12/18 -rw-r--r-- 1 login_1 hosting sale.xls 18432 12/04/19 -rw-r--r-- 1 login_1 hosting schet.xls 17408 19/04/21 15:38 -rw-r--r-- 1 login_1 hosting sms.xls 16384 11/05/21 16:40 -rw-r--r-- 1 login_1 hosting TotalCommander reestr.xls 17 408 04.12.2020 09:34 -644 rko.xls 24 064 12.12.2018 17:42 -644 sale.xls 18 432 12.04.2019 21:40 -644 schet.xls 17 408 19.04.2021 15:38 -644 sms.xls 16 384 11.05.2021 16:40 -644 ftp -rw-r--r-- 1 login_10 hosting 17408 Dec 4 09:34 reestr.xls -rw-r--r-- 1 login_10 hosting 24064 Dec 12 2018 rko.xls -rw-r--r-- 1 login_10 hosting 18432 Apr 12 2019 sale.xls -rw-r--r-- 1 login_10 hosting 17408 Apr 19 15:38 schet.xls -rw-r--r-- 1 login_10 hosting 16384 May 11 16:40 sms.xls Как это делает TotalCommander ?
|
|
|
Новых ответов нет
, стр:
1
2
3
All
[см. все]
|
|
|
| |
Пост N: 7343
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.05.21 16:33. Заголовок: Чекнул у себя. Дейст..
Чекнул у себя. Действительно , если у файла не текущий год , тогда в LIST теряется время. Если год текущий тогда передаст что то типа Apr 19 15:38 А если нет то Apr 19 2019 и время теряется...... MIKHAIL пишет: цитата: | Как это делает TotalCommander ? |
| Возможно он дополнительно по каждому файлу делает MDTM Syntax: MDTM remote-filename Возврат в формате "YYYYMMDDhhmmss"
|
|
|
|
| |
Пост N: 306
Зарегистрирован: 05.10.06
|
|
Отправлено: 12.05.21 16:53. Заголовок: Dima пишет: Возможн..
Dima пишет: цитата: | Возможно он дополнительно по каждому файлу делает MDTM Syntax: MDTM remote-filename Возврат в формате "YYYYMMDDhhmmss" |
| Да, тоже нагуглил пока только так наверное нужно ее использовать через METHOD UserCommand( cCommand, lPasv, lReadPort, lGetReply ) CLASS TIPClientFTP ?
|
|
|
|
| |
Пост N: 7344
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.05.21 16:58. Заголовок: MIKHAIL пишет: Да, ..
MIKHAIL пишет: цитата: | Да, тоже нагуглил пока только так |
| Поэтому можно делать укороченный лист NLST + по этому массиву имен MDTM
|
|
|
|
| |
Пост N: 307
Зарегистрирован: 05.10.06
|
|
Отправлено: 12.05.21 17:03. Заголовок: Dima пишет: Поэтому..
Dima пишет: цитата: | Поэтому можно делать укороченный лист NLST + по этому массиву имен MDTM |
| через METHOD UserCommand( cCommand, lPasv, lReadPort, lGetReply ) CLASS TIPClientFTP ?
|
|
|
|
| |
Пост N: 7345
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.05.21 17:05. Заголовок: думаю да если мы про..
думаю да если мы про HBTIP , я его не юзаю больше и пересел на HBCURL
|
|
|
|
| |
Пост N: 308
Зарегистрирован: 05.10.06
|
|
Отправлено: 12.05.21 17:09. Заголовок: Dima пишет: пересел..
Dima пишет: а в чем его преимущество,можно вкратце ?
|
|
|
|
| |
Пост N: 7346
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.05.21 17:12. Заголовок: MIKHAIL пишет: а в ..
MIKHAIL пишет: цитата: | а в чем его преимущество,можно вкратце ? |
| быстрее и надежнее
|
|
|
|
| |
Пост N: 7347
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.05.21 18:36. Заголовок: Dima пишет: Поэтому..
Dima пишет: цитата: | Поэтому можно делать укороченный лист NLST + по этому массиву имен MDTM |
| Был не прав и менее затратный вариант такой. Получаем LISTFILES и затем ходим по этому массиву и где время пустое , там запрашиваем MDTM (вытаскиваем время) и ложим в этот же массив на место пустого времени
|
|
|
|
| |
Пост N: 7348
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.05.21 21:38. Заголовок: Покопал слегка. Есть..
Покопал слегка. Есть еще MLSD. Надо разбираться что живет в modify Пример type=file;size=433;modify=20200213145801; F_4696_36444.ZIP type=file;size=435;modify=20210213145801; F_4764_36446.ZIP
|
|
|
|
| постоянный участник
|
Пост N: 1683
Зарегистрирован: 09.10.06
|
|
Отправлено: 12.05.21 22:16. Заголовок: Dima пишет: Надо ра..
|
|
|
|
| |
Пост N: 309
Зарегистрирован: 05.10.06
|
|
Отправлено: 13.05.21 15:34. Заголовок: Dima пишет: Есть ещ..
Dima пишет: чет в обычном ftp не работает ни MLSD ни MDTM и ::usercommand() не удается заставить работать а в curl как это работает ? есть примеры посмотреть ?
|
|
|
|
|
| |
Пост N: 7350
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.05.21 16:06. Заголовок: MIKHAIL пишет: ::us..
MIKHAIL пишет: цитата: | ::usercommand() не удается заставить работать |
| Та же фигня....... Пример сейчас дам #include "hbcurl.ch" proc main Local aftpPar curl_global_init() aftpPar:=LoadNastrFtp() // загружаем настройки FTP из базы ? TestMLSD(aftpPar[6],aftpPar[4],aftpPar[5],aftpPar[14]) curl_global_cleanup() return ************ FUNCTION TestMLSD( cserver,cuser,cpassword,nport,rdir) LOCAL cUrl LOCAL lRet := .f. Local Cftp:="ftp://"+cserver+":"+hb_ntos(nport) local nerr curl := curl_easy_init() if empty(curl) ? "Bad curl_easy_init" return lRet endif do while .t. curl_easy_setopt( curl, HB_CURLOPT_DOWNLOAD ) curl_easy_setopt( curl, HB_CURLOPT_URL, cftp ) curl_easy_setopt( curl, HB_CURLOPT_USERPWD,cuser+":"+cpassword) curl_easy_setopt( curl, HB_CURLOPT_FTP_USE_EPSV,0) // 0 PASV 1 EPASV curl_easy_setopt( curl, HB_CURLOPT_DL_BUFF_SETUP ) if !empty(rdir) curl_easy_setopt( curl, HB_CURLOPT_QUOTE, { "CWD "+rdir} ) endif curl_easy_setopt( curl, HB_CURLOPT_CUSTOMREQUEST,"MLSD") nerr:=curl_easy_perform( curl ) if nerr#0 ? "CurlError "+hb_ntos(nerr) exit endif strfile(curl_easy_dl_buff_get( curl ),"lst.log") exit enddo curl_easy_cleanup( curl ) RETURN lRet PS У меня Gene6 FTP Server и он понимает MLSD
|
|
|
|
| |
Пост N: 310
Зарегистрирован: 05.10.06
|
|
Отправлено: 13.05.21 22:34. Заголовок: Dima а что нужно под..
Dima а что нужно подключить что бы собралось ? цитата: | Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: Unresolved external '_curl_global_init_mem' referenced from D:\HB\LIB\WIN \BCC\HBCURL.LIB|core Error: Unresolved external '_curl_global_cleanup' referenced from D:\HB\LIB\WIN\ BCC\HBCURL.LIB|core ....... |
|
|
|
|
|
| постоянный участник
|
Пост N: 1685
Зарегистрирован: 09.10.06
|
|
Отправлено: 13.05.21 22:38. Заголовок: MIKHAIL пишет: а чт..
MIKHAIL пишет: цитата: | а что нужно подключить что бы собралось ? |
| libcurl.lib
|
|
|
|
| |
Пост N: 7351
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.05.21 22:41. Заголовок: MIKHAIL Фиг знает н..
MIKHAIL Фиг знает не скажу , у меня MINGW. Это я про сборку либы. Собираю таким батником (который поселил в папку с сырцом HBCURL) set PATH=%PATH%;C:\MinGW12\bin;c:\hb32mingw19\bin\ set HB_WITH_CURL=c:\curl\7761\include set HB_STATIC_CURL=yes c:\hb32mingw19\bin\hbmk2 hbcurl Петр пишет: Скорее всего так и есть !
|
|
|
|
| постоянный участник
|
Пост N: 1686
Зарегистрирован: 09.10.06
|
|
Отправлено: 13.05.21 22:50. Заголовок: Нужно подключать биб..
Нужно подключать библиотеку импорта Для MINGW это делается примерно так: @echo off setlocal set PATH=c:\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\bin rem -v --verbose rem -d --input-def rem -l --output-lib rem -y --output-delaylib dlltool -v -d libcurl-x64.def -l liblibcurl-x64.a dlltool -v -d libcurl-x64.def -y liblibcurld-x64.a endlocal libcurl-x64.def берем из curl-7.76.1-win64-mingw\bin\libcurl-x64.def (ну это у меня так) имя liblibcurl-x64 можем задать любое (здесь лучше без фанатизма). Для bcc используется implib
|
|
|
|
| постоянный участник
|
Пост N: 1687
Зарегистрирован: 09.10.06
|
|
Отправлено: 13.05.21 22:57. Заголовок: И еще. Поскольку li..
И еще. Поскольку libcurl-x64.def содержит только секцию EXPORTS, его нужно отредактировать добавив секцию LIBRARY цитата: | LIBRARY libcurl-x64 EXPORTS curl_easy_cleanup @1 |
|
|
|
|
|
| постоянный участник
|
Пост N: 1688
Зарегистрирован: 09.10.06
|
|
Отправлено: 13.05.21 23:10. Заголовок: Dima пишет: Та же ф..
Dima пишет: А вот здесь (ftp.funet.fi/pub/) работает цитата: | #include "hbcurl.ch" #define CURL_HTTP_VERSION_2TLS 4 PROCEDURE Main() LOCAL curl, aTmp, a, rDir := "" LOCAL nCURLCode curl_global_init() IF ! Empty( curl := curl_easy_init() ) curl_easy_setopt( curl, HB_CURLOPT_BUFFERSIZE, 102400 ) curl_easy_setopt( curl, HB_CURLOPT_URL, "ftp.funet.fi/pub/" ) curl_easy_setopt( curl, HB_CURLOPT_NOPROGRESS, .T. ) curl_easy_setopt( curl, HB_CURLOPT_USERAGENT, "curl/7.75.0" ) curl_easy_setopt( curl, HB_CURLOPT_MAXREDIRS, 50 ) curl_easy_setopt( curl, HB_CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS ) curl_easy_setopt( curl, HB_CURLOPT_SSL_VERIFYPEER, .F. ) curl_easy_setopt( curl, HB_CURLOPT_SSL_VERIFYHOST, .F. ) curl_easy_setopt( curl, HB_CURLOPT_FTP_USE_EPSV, .F. ) /* please ignore the IP in the PASV response */ curl_easy_setopt( curl, HB_CURLOPT_FTP_SKIP_PASV_IP, .T. ) curl_easy_setopt( curl, HB_CURLOPT_FTP_FILEMETHOD, 3 ) curl_easy_setopt( curl, HB_CURLOPT_TCP_KEEPALIVE, .T. ) curl_easy_setopt( curl, HB_CURLOPT_CUSTOMREQUEST, "MLSD" ) IF ! Empty( rDir ) curl_easy_setopt( curl, HB_CURLOPT_QUOTE, { "CWD " + rDir } ) ENDIF curl_easy_setopt( curl, HB_CURLOPT_DL_BUFF_SETUP ) nCURLCode := curl_easy_perform( curl ) IF nCURLCode == HB_CURLE_OK ? "EFFECTIVE URL:", curl_easy_getinfo( curl, HB_CURLINFO_EFFECTIVE_URL ) cTmp := curl_easy_dl_buff_get( curl ) aTmp := hb_ATokens( cTmp, hb_eol() ) FOR EACH a IN aTmp IF hb_LeftEq( a, "type=dir" ) ? a ENDIF NEXT ELSE ? nCURLCode, ":", curl_easy_strerror( nCURLCode ) ENDIF /* Cleanup session */ curl_easy_cleanup( curl ) ENDIF curl_global_cleanup() RETURN |
|
|
|
|
|
| |
Пост N: 7352
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.05.21 23:17. Заголовок: Петр пишет: А вот з..
Петр пишет: цитата: | А вот здесь (ftp.funet.fi/pub/) работает |
| так это я про hbtip писал и usercommand
|
|
|
|
| постоянный участник
|
Пост N: 1689
Зарегистрирован: 09.10.06
|
|
Отправлено: 13.05.21 23:33. Заголовок: Dima пишет: так это..
Dima пишет: цитата: | так это я про hbtip писал и usercommand |
| Понял, lReadPort := .t. lGetReply := .t. if ftp:UserCommand( "MLSD", lPasv, @lReadPort, @lGetReply ) ? lReadPort ? lGetReply ... endif и так не работает ?
|
|
|
Новых ответов нет
, стр:
1
2
3
All
[см. все]
|
|