C#使用FTP上传整个目录

hss*_*son 9 c# directory ftp recursion upload

我想要做的是在C#(C Sharp)中使用FTP上传网站.所以我需要上传文件夹中的所有文件和文件夹,保持其结构.我正在使用这个FTP类:http://www.codeproject.com/Tips/443588/Simple-Csharp-FTP-Class用于实际上传.

我得出结论,我需要编写一个递归方法,遍历主目录的每个子目录并上传其中的所有文件和文件夹.这应该将我的文件夹的精确副本复制到FTP.问题是......我不知道怎么写这样的方法.我以前写过递归方法,但我是FTP部分的新手.

这是我到目前为止:

private void recursiveDirectory(string directoryPath)
    {
        string[] filePaths = null;
        string[] subDirectories = null;

        filePaths = Directory.GetFiles(directoryPath, "*.*");
        subDirectories = Directory.GetDirectories(directoryPath);

        if (filePaths != null && subDirectories != null)
        {
            foreach (string directory in subDirectories)
            {
                ftpClient.createDirectory(directory);
            }
            foreach (string file in filePaths)
            {
                ftpClient.upload(Path.GetDirectoryName(directoryPath), file);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

但它远未完成,我不知道如何继续.我确定比我更需要知道这一点!提前致谢 :)

哦,如果它报告它的进展也会很好:)(我正在使用进度条)

编辑:可能不清楚...如何使用FTP上传包含所有子目录和文件的目录?

hss*_*son 16

问题解决了!:)

好吧,所以我设法写了方法myslef.如果有人需要它可以随意复制:

private void recursiveDirectory(string dirPath, string uploadPath)
    {
        string[] files = Directory.GetFiles(dirPath, "*.*");
        string[] subDirs = Directory.GetDirectories(dirPath);

        foreach (string file in files)
        {
            ftpClient.upload(uploadPath + "/" + Path.GetFileName(file), file);
        }

        foreach (string subDir in subDirs)
        {
            ftpClient.createDirectory(uploadPath + "/" + Path.GetFileName(subDir));
            recursiveDirectory(subDir, uploadPath + "/" + Path.GetFileName(subDir));
        }
    }
Run Code Online (Sandbox Code Playgroud)

它工作得很好:)