2013-04-17 3 views
5

FTPサーバーにはいくつかのファイルがあります。このサーバー上の任意の時間は、新しいファイルをアップロードしています。私は最後のファイルをダウンロードしたいと思います。このサーバーから最後にアップロードしたファイルを取得するにはどうすればよいですか?すべてのファイルの名前は異なります。PHPで最新のファイルをFTPでダウンロードするにはどうしたらいいですか?

私はフォロースクリプトを使用して1つのファイルをダウンロードしました。

$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); 

ありがとうございます!!!

+0

は何をしようとしましたか?あなたは、解決策が何であるかを段階的に説明します(例えば、1.ファイルのリストを取得する、2.最新のファイルを検索する)。 – CodeCaster

+0

私はいつも 'proceed'フォルダを使って作業します。そこにftpでダウンロードしたファイルを移動します。これにより、タイムスタンプのチェックが行われなくなります –

答えて

-1
ftp_rawlist($conn); 

最新のファイル名を抽出して取得します。

7

「アップロードされた時刻」属性などは存在しないため、どのファイルが最新のものかを確認する方法はありません。あなたはFTPサーバについてあまり言及していませんでしたが、アップロードの管理レベルがある場合は、アップロード時に最後に変更された時刻が設定されていることを確認できます。これが作業を終了するかどうかは、FTPサーバーとおそらくクライアントにまで及ぶ。あなたはこのような何かを行うことができ、変更した時間が倍のアップロードと同等であると仮定すると、

// 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

非常に助かりました。ありがとうございます。 – joshuarh

関連する問題