C# 使用 FTP 上传整个目录

标签 c# recursion upload ftp directory

我想做的是在 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);
            }
        }
    }

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

哦还有...如果它也能报告它的进度就好了:)(我正在使用进度条)

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

最佳答案

问题解决了! :)

好吧,我设法自己编写了方法。如果有人需要,请随时复制:

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

效果很好:)

关于C# 使用 FTP 上传整个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13311975/

相关文章:

c# - 在 C# 中使用字符串和 int 数据类型创建列表

c# - 相对布局上的背景图像无法获取表单上的屏幕尺寸

android - React Native博览会上传:ios issue

Javascript加密文件上传

java - "the request was rejected because its size " Spring , Tomcat

c# - 如何从 Mvc 中的 HomeController 中删除 Home

c# - 如何使用 C# 检查是否安装了 PowerShell

java - 使用jsp将递归结构转换为xml

python - 为什么在 Scheme 和 Python 中实现的递归方程的返回值不同?

haskell - 多态递归的应用