ftp_mkdir创建2个文件夹

时间:2013-11-17 18:39:31

标签: php ftp directory timestamp

我创建了这个简单的PHP脚本来存储使用时间戳创建的文件夹下的文件,但脚本创建了2个文件夹而不是一个。

$connection = ftp_connect($server);

$login = ftp_login($connection, $ftp_user_name, $ftp_user_pass);

if (!$connection || !$login) { die('Connection attempt failed!'); }

$timestamp = strtotime(date("Y-m-d H:i:s"));

ftp_mkdir($connection, $timestamp);

$upload = ftp_put($connection, "./".$timestamp."/".$dest, $source, FTP_BINARY );

if (!$upload) { echo 'FTP upload failed!'; }

ftp_close($connection);

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

由于您的目录命名逻辑使用时间戳,您可能会遇到上载时系统只是运行FTP逻辑两次的情况?或类似的规定。因此,请尝试使用ftp_mkdir使用目录检查逻辑包装ftp_chdir命令,以便仅在目录尚不存在时才创建目录:

if (!@ftp_chdir($connection, $timestamp)) {
  ftp_mkdir($connection, $timestamp);
}

所以整个事情现在都是:

$connection = ftp_connect($server);

$login = ftp_login($connection, $ftp_user_name, $ftp_user_pass);

if (!$connection || !$login) { die('Connection attempt failed!'); }

$timestamp = strtotime(date("Y-m-d H:i:s"));

if (!@ftp_chdir($connection, $timestamp)) {
  ftp_mkdir($connection, $timestamp);
}

$upload = ftp_put($connection, "./".$timestamp."/".$dest, $source, FTP_BINARY );

if (!$upload) { echo 'FTP upload failed!'; }

ftp_close($connection);

编辑:另一个想法是只注释掉ftp_mkdir的行,看看会发生什么:

# ftp_mkdir($connection, $timestamp);