所以我正在尝试制作一个函数来制作文件夹和所有内容(带子文件夹)的本地副本并将副本发送到远程服务器,本地副本没问题,但是ftp副本没有格式化它的方式。它们都拥有所有文件,但ftp版本没有正确格式化文件结构。我看了,但找不到任何有这个问题的帖子,所以任何指针都会有所帮助。
示例:正确
但这就是我得到的,
function copyr($source, $dest, $conId) {
$sourceName = explode('/',$dest);
$sourceName = $sourceName[count($sourceName)-1];
// copy file
if (is_file($source)) {
$upLink = ftp_fput($conId, $sourceName, fopen($source, 'r'), FTP_ASCII);
return copy($source, $dest);
}
// Make destination directory
if (!is_dir($dest)) {
mkdir($dest);
ftp_mkdir($conId, $sourceName);
ftp_chdir($conId, $sourceName);
} else if(is_dir($dest)){ // go to one that has been made.
ftp_chdir($conId, $sourceName);
}
// Loop the folder
$dir = dir($source);
while (false !== $entry = $dir->read()) {
// Skip pointers
if ($entry == '.' || $entry == '..') {
continue;
}
// Copy sub directories
if ($dest !== "$source/$entry") {
copyr("$source/$entry", "$dest/$entry", $conId, $entry);
}
}
// Clean up
$dir->close();
return true;
}
$source = 'images';
$dest = 'NewImages';
if(copyr($source, $dest, $conId)){
echo "It's finished .... Good.";
} else {
echo "Failed ... ";
}
ftp_close($conId);
部分内容我从php.net复制了其他部分,看了.net手册为ftp后放在一起。
感谢。
答案 0 :(得分:0)
从递归返回后,您忘记退出目录(例如cd ..
)。