On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение





Пост 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 ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 45 , стр: 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"

Спасибо: 1 
ПрофильЦитата Ответить





Пост 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 ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7344
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.05.21 16:58. Заголовок: MIKHAIL пишет: Да, ..


MIKHAIL пишет:

 цитата:
Да, тоже нагуглил пока только так


Поэтому можно делать укороченный лист NLST + по этому массиву имен MDTM

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 307
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 12.05.21 17:03. Заголовок: Dima пишет: Поэтому..


Dima пишет:

 цитата:
Поэтому можно делать укороченный лист NLST + по этому массиву имен MDTM


через METHOD UserCommand( cCommand, lPasv, lReadPort, lGetReply ) CLASS TIPClientFTP ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7345
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.05.21 17:05. Заголовок: думаю да если мы про..


думаю да если мы про HBTIP , я его не юзаю больше и пересел на HBCURL

Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 308
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 12.05.21 17:09. Заголовок: Dima пишет: пересел..


Dima пишет:

 цитата:
пересел на HBCURL


а в чем его преимущество,можно вкратце ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7346
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.05.21 17:12. Заголовок: MIKHAIL пишет: а в ..


MIKHAIL пишет:

 цитата:
а в чем его преимущество,можно вкратце ?


быстрее и надежнее

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7347
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.05.21 18:36. Заголовок: Dima пишет: Поэтому..


Dima пишет:

 цитата:
Поэтому можно делать укороченный лист NLST + по этому массиву имен MDTM


Был не прав и менее затратный вариант такой. Получаем LISTFILES и затем ходим по этому
массиву и где время пустое , там запрашиваем MDTM (вытаскиваем время) и ложим в этот же массив на место пустого
времени

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1683
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 12.05.21 22:16. Заголовок: Dima пишет: Надо ра..


Dima пишет:

 цитата:
Надо разбираться что живет в modify


Синхронизация каталогов и FTP-серверов с MLSD

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 309
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 13.05.21 15:34. Заголовок: Dima пишет: Есть ещ..


Dima пишет:

 цитата:
Есть еще MLSD


чет в обычном ftp не работает ни MLSD ни MDTM
и ::usercommand() не удается заставить работать
а в curl как это работает ? есть примеры посмотреть ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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

Спасибо: 0 
ПрофильЦитата Ответить





Пост 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
.......



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1685
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 13.05.21 22:38. Заголовок: MIKHAIL пишет: а чт..


MIKHAIL пишет:

 цитата:
а что нужно подключить что бы собралось ?


libcurl.lib

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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

Петр пишет:

 цитата:
libcurl.lib


Скорее всего так и есть !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост 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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1687
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 13.05.21 22:57. Заголовок: И еще. Поскольку li..


И еще.
Поскольку libcurl-x64.def содержит только секцию EXPORTS, его нужно отредактировать добавив секцию LIBRARY


 цитата:
LIBRARY 
libcurl-x64
EXPORTS
curl_easy_cleanup @1



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост 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




Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7352
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.05.21 23:17. Заголовок: Петр пишет: А вот з..


Петр пишет:

 цитата:
А вот здесь (ftp.funet.fi/pub/) работает


так это я про hbtip писал и usercommand

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост 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

и так не работает ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 45 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 522
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет