首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用C#在FTP服务器上创建目录?

如何使用C#在FTP服务器上创建目录?
EN

Stack Overflow用户
提问于 2009-05-13 21:57:17
回答 4查看 100K关注 0票数 66

使用C#在FTP服务器上创建目录的简单方法是什么?

我想出了如何将文件上传到已经存在的文件夹中,如下所示:

代码语言:javascript
复制
using (WebClient webClient = new WebClient())
{
    string filePath = "d:/users/abrien/file.txt";
    webClient.UploadFile("ftp://10.128.101.78/users/file.txt", filePath);
}

然而,如果我想上传到users/abrien,我会得到一个WebException,告诉我文件不可用。我假设这是因为我需要在上传文件之前创建新文件夹,但WebClient似乎没有任何方法来完成这一任务。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-05-13 22:03:36

使用带有WebRequestMethods.Ftp.MakeDirectory方法的FtpWebRequest

例如:

代码语言:javascript
复制
using System;
using System.Net;

class Test
{
    static void Main()
    {
        WebRequest request = WebRequest.Create("ftp://host.com/directory");
        request.Method = WebRequestMethods.Ftp.MakeDirectory;
        request.Credentials = new NetworkCredential("user", "pass");
        using (var resp = (FtpWebResponse) request.GetResponse())
        {
            Console.WriteLine(resp.StatusCode);
        }
    }
}
票数 110
EN

Stack Overflow用户

发布于 2014-05-07 21:51:16

以下是您想要创建嵌套目录的答案

没有干净的方法来检查文件夹是否存在于ftp上,因此您必须循环并创建所有嵌套结构,一次创建一个文件夹

代码语言:javascript
复制
public static void MakeFTPDir(string ftpAddress, string pathToCreate, string login, string password, byte[] fileContents, string ftpProxy = null)
    {
        FtpWebRequest reqFTP = null;
        Stream ftpStream = null;

        string[] subDirs = pathToCreate.Split('/');

        string currentDir = string.Format("ftp://{0}", ftpAddress);

        foreach (string subDir in subDirs)
        {
            try
            {
                currentDir = currentDir + "/" + subDir;
                reqFTP = (FtpWebRequest)FtpWebRequest.Create(currentDir);
                reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;
                reqFTP.UseBinary = true;
                reqFTP.Credentials = new NetworkCredential(login, password);
                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
                ftpStream = response.GetResponseStream();
                ftpStream.Close();
                response.Close();
            }
            catch (Exception ex)
            {
                //directory already exist I know that is weak but there is no way to check if a folder exist on ftp...
            }
        }
    }
票数 41
EN

Stack Overflow用户

发布于 2009-05-13 22:04:39

如下所示:

代码语言:javascript
复制
// remoteUri points out an ftp address ("ftp://server/thefoldertocreate")
WebRequest request = WebRequest.Create(remoteUri);
request.Method = WebRequestMethods.Ftp.MakeDirectory;
WebResponse response = request.GetResponse();

(有点晚了。真奇怪。)

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/860638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档