FTP - godzina załadowania pliku na serwer

0

Witam
Czy jest taka możliwość, aby odczytać godzinę załadowania pliku na FTP?
Nie chodzi mi o godzinę utworzenia pliku na kompie, tylko godzinę załadowania go na serwer.

Jest taka możliwość? :)

Język programowania - Delphi, komponent idFTP.

Proszę moderatora o scalenie postów.

0

W tym dziale Ci nie scale, a z idftp jeżeli się przy nim upierasz to pomóc może tutaj chyba tylko kAzek, bo z Indykiem jest jak z Delphi, jest tylko dwóch programistów Delphi, tak jak chyba dwóch użytkowników Indy, pewnie kAzek i Ty. Ja polecam osobiście Synapse i moduł ftpsend, z którego wnioskuje co następuje, że jest własność FileTime o takim opisie:

    {:date and time of file. Local server timezone is used. Any timezone
     conversions was not done!}
    property FileTime: TDateTime read FFileTime write FFileTime;

czyli tylko takie coś da się uzyskać. Będzie to pewnie data zapisania pliku po raz pierwszy, ale pewności nie mam. Pobierz Synapse, popatrz na dema i do dokumentacji i zobacz co zwraca kod i czy to Ciebie interesuje.

0

Na wstępie dziękuję olesio za wyróżnienie i czuje się być zaszczycony jako jeden z nielicznych (jak napisałeś 2) w przekonaniu wielu osób użyszkodników Indy ;) Tak naprawdę to używam i Synapse i Indy w zależności od potrzeby i czasu.

Co do odpowiedzi to chyba poniższy kod powinien dać to czego szukasz:

  IdFTP1.Host := 'host';
  IdFTP1.Username := 'login';
  IdFTP1.Password := 'haslo';
  IdFTP1.Port:= 21;
  IdFTP1.Passive:= True;  //w zaleznosci od serwera
  IdFTP1.Connect();
  IdFTP1.ChangeDir('public_html'); //zmiana katalogu
  ShowMessage(DateTimeToStr(IdFTP1.FileDate('nazwa pliku')));
  IdFTP1.Abort; //tu nie konieczne
  IdFTP1.Quit;

EDIT// Zapomniałem to jest przykład dla Indy 10 ale w 9 chyba podobnie

0

Jeśli chcesz odczytać datę utworzenia pliku zaraz po tym jak go tam wysłałeś, to możesz
skorzystać z daty ostatniej modyfikacji, która będzie taka sama jak data utworzenia pliku.

    // FTP = IdFTP; sLastMod = String; FileName = String, plik;
    FTP.SendCmd('MDTM ' + FileName, [213]);
    sLastMod := FTP.LastCmdResult.Text.Text;

MDTM
Syntax: MDTM remote-filename

Returns the last-modified time of the given file on the remote host in the format "YYYYMMDDhhmmss":

  • YYYY is the four-digit year,
  • MM is the month from 01 to 12,
  • DD is the day of the month from 01 to 31,
  • hh is the hour from 00 to 23,
  • mm is the minute from 00 to 59,
  • and ss is the second from 00 to 59.

Z takiego string'a wydobywasz odpowiednio kolejne elementy (Y, M, D, h, m, s) i przy
pomocy EncodeDateTime() przekształcasz je na typ DateTime.

0

No to chyba mam Indy 9 w Delphi 7, ponieważ FileDate jest jako Undeclared identifier. :)

Szukam na google, innego rozwiązania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1