我是php的新手。有一项任务是从包含文件的服务器只有今天的ftp文件超过一周。如何根据日期和ftp选择或过滤文件到我的本地文件夹。 非常感谢帮助!!
所罗门
答案 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);
?>