0

所以我正在尝试制作一个功能来制作文件夹和所有内容(带有子文件夹)的本地副本并将副本发送到远程服务器,本地副本很好,但 ftp 副本的格式不一样应该。他们都有所有文件,但 ftp 版本没有正确格式化文件结构。我看了但找不到任何有这个问题的帖子,所以任何指针都会有帮助。

示例:正确

  • 主要的
    • 子1
    • 子 2
    • 子 3
    • 子 4
      • 4 - 1 分
      • 4 - 2 的子

但这就是我得到的,

  • 主要的
    • 子 4
      • 子 0f 4 - 1
        • 子 0f 4 - 2
          • 子 3
            • 子 2
              • 子 1
这是代码:

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);

在查看 .net Manual for ftp 后,我从 php.net 复制了其中的一部分,将其他部分放在一起。

谢谢。

4

1 回答 1

0

cd ..从递归返回后,您忘记退出目录(例如)。

于 2012-05-03T20:36:57.780 回答