仅限今天的文件

时间:2010-08-03 13:01:52

标签: php4

我是php的新手。有一项任务是从包含文件的服务器只有今天的ftp文件超过一周。如何根据日期和ftp选择或过滤文件到我的本地文件夹。 非常感谢帮助!!

所罗门

2 个答案:

答案 0 :(得分:0)

如果您已经有要检查的文件名,请使用filemtime

  

返回上次修改文件的时间,或者失败时返回FALSE。该时间作为Unix时间戳返回,适用于date()函数。

要比较今天的情况,您今天可以使用date('Y-m-d')date('Y-m-d', filemtime($filename))进行比较

要获取文件名,您可以使用readdir依次阅读每个文件名。

<?php
if ($handle = opendir('/path/to/files')) {
    echo "Directory handle: $handle\n";
    echo "Files:\n";

    while (false !== ($filename = readdir($handle))) {
        echo "$filename\n";
    }

    closedir($handle);
}
?>

手册中还有一个FTP example,它会告诉你如何在找到文件后ftp文件。

所以,结合所有这些,你可以得到类似的东西:

<?php
   // set up basic connection
   $conn_id = ftp_connect($ftp_server); 

   // login with username and password
   $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

   // check connection
   if ((!$conn_id) || (!$login_result)) { 
      echo "FTP connection has failed!";
      echo "Attempted to connect to $ftp_server for user $ftp_user_name"; 
      exit; 
   } else {
      echo "Connected to $ftp_server, for user $ftp_user_name";
   }

   if ($handle = opendir('/path/to/files')) {

   while (false !== ($filename = readdir($handle))) {
      if (date('Y-m-d') == date('Y-m-d', filemtime($filename))) {
         // upload the file
         $upload = ftp_put($conn_id, $destination_file, $filename, FTP_BINARY); 

         // check upload status
         if (!$upload) { 
            echo "FTP upload has failed!";
         } else {
            echo "Uploaded $source_file to $ftp_server as $destination_file";
         }
      }
   }

   closedir($handle);

   // close the FTP stream 
   ftp_close($conn_id); 
?>

当然,您需要根据需要填写虚拟值。

免责声明:我在记事本++中键入了这个,并且没有测试任何错误!

答案 1 :(得分:0)

链接: http://www.php.net/manual/en/function.ftp-rawlist.php

你连接到服务器, 获取ftp_rawlist()

的文件列表

并通过ftp_fget()

获取您想要的文件

例如

<?php

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// get the file list for /
$rawfiles = ftp_rawlist($conn_id, '/');

foreach ($rawfiles as $rawfile) {
# parse the raw data to array
if(!empty($rawfile)) {
    $info = preg_split("/[\s]+/", $rawfile, 9);       
    $arraypointer[] = array(
        'text'   => $info[8],
        'isDir'  => $info[0]{0} == 'd',
        'size'   => byteconvert($info[4]),
        'chmod'  => chmodnum($info[0]),
        'date'   => strtotime($info[6] . ' ' . $info[5] . ' ' . $info[7]),
        'raw'    => $info
        // the 'children' attribut is automatically added if the folder contains at least one file
    );
// pseudo code check the date
 if($arraypointer['date'] is today) 
   ftp_fget(file);
}

// close the connection
ftp_close($conn_id);

// output the buffer
var_dump($buff);
?>