2013-04-17 13 views
5

Na serwerze FTP jest kilka plików. Przez dowolną godzinę na tym serwerze ładuje nowe pliki. Chciałbym pobrać ostatni plik. Jak mogę pobrać ostatnio przesłany plik z tego serwera? Wszystkie pliki mają różne nazwy.Jak mogę pobrać najnowszy plik na FTP z PHP?

użyłem folowing skrypt do pobierania jednego pliku.

$conn = ftp_connect("ftp.testftp.com") or die("Could not connect"); 
ftp_login($conn,"user","pass"); 
ftp_get($conn,"target.txt","source.txt",FTP_ASCII); 
ftp_close($conn); 

Z góry dziękuję !!!

+0

próbowałem niczego? Wyjaśnij krok po kroku, jakie jest Twoje rozwiązanie (np. 1. Pobierz listę plików, 2. Znajdź najnowszy plik) i pokaż, gdzie utknąłeś. – CodeCaster

+0

Zawsze pracuję z folderem 'continue', tam przenoszę pliki, które pobrałem z ftp. Zapobiega to sprawdzaniu znaczników czasu. –

Odpowiedz

-1
ftp_rawlist($conn); 

wypakuj najnowszą nazwę pliku i pobierz ją.

7

Nie ma sposobu, aby mieć pewność, który plik jest najnowszym, ponieważ nie ma czegoś takiego jak atrybut „Przesłano czasu”. Nie wspomniałeś wiele o serwerze FTP, ale jeśli masz pewien poziom zarządzania przesyłanymi plikami, możesz upewnić się, że czas ostatniej modyfikacji został ustawiony na wysyłanie. To, czy to się skończy, zależy od serwera FTP i ewentualnie od klientów.

Zakładając, że zmodyfikowane czasy są równoważne przesłać razy, można zrobić coś takiego:

// connect 
$conn = ftp_connect('ftp.addr.com'); 
ftp_login($conn, 'user', 'pass'); 

// get list of files on given path 
$files = ftp_nlist($conn, ''); 

$mostRecent = array(
    'time' => 0, 
    'file' => null 
); 

foreach ($files as $file) { 
    // get the last modified time for the file 
    $time = ftp_mdtm($conn, $file); 

    if ($time > $mostRecent['time']) { 
     // this file is the most recent so far 
     $mostRecent['time'] = $time; 
     $mostRecent['file'] = $file; 
    } 
} 

ftp_get($conn, "target.txt", $mostRecent['file'], FTP_ASCII); 
ftp_close($conn); 
+0

Bardzo pomocne, dzięki. – joshuarh

Powiązane problemy