这是我的PHP代码。它实际上工作正常:
$newftpdir_parent = date('Ymd'); // YYYYMMDD
$newftpdir_child = $ext_folder; // username
$newftpdir = $newftpdir_parent.'/'.$newftpdir_child; // YYYYMMDD/username
$conn_id = ftp_connect($uptoftp_server);
ftp_login($conn_id, $uptoftp_username, $uptoftp_pass);
$path_of_storage = $uptoftp_path_abs.'/'.$uptoftp_path_rel; // /var/www/uploads
if( !@ftp_chdir($conn_id, $path_of_storage.'/'.$newftpdir_parent) ){
ftp_mkdir($conn_id, $path_of_storage.'/'.$newftpdir_parent);
ftp_chmod($conn_id, 0777, $path_of_storage.'/'.$newftpdir_parent);
}
if( !@ftp_chdir($conn_id, $path_of_storage.'/'.$newftpdir) ){
ftp_mkdir($conn_id, $path_of_storage.'/'.$newftpdir);
ftp_chmod($conn_id, 0777, $path_of_storage.'/'.$newftpdir);
}
ftp_chdir($conn_id, $path_of_storage.'/'.$newftpdir);
ftp_put($conn_id, $file_name, $filetoftp, FTP_ASCII);
ftp_close($conn_id);
它将文件从本地服务器上传到远程 ftp 服务器。如您所见,有 2 个丑陋的 if 条件检查目录是否存在,如果不存在,我们创建它并移入其中。再次为子目录。因为我现在希望我的目录(在 ftp 服务器上)看起来像 YYYY/MM/DD/username 而不是 YYYYMMDD/username,所以我需要再创建两个 if 块。它工作得很好,但它看起来并不干净,我有点疯狂......我想知道是否有更好的方法来做到这一点,因为 ftp_mkdir() 不能创建多个目录(其中包含子目录的目录)?
例如,仅考虑 /uploads/ 目录存在,但不存在 /2013/ 子目录 /06/ 和 /11/ :
ftp_mkdir($conn_id, '/var/www/uploads/2013/06/11');
返回:
Warning: ftp_mkdir() [function.ftp-mkdir]: /var/www/uploads/2013/06/11: No such file or directory in /home/blabla/www/test.php on line 18