如何使用C#在ftp服务器上创build一个目录?

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

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

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说该文件不可用。 我认为这是因为我需要在上传文件之前创build新的文件夹,但WebClient似乎没有任何方法来完成。

使用FtpWebRequest ,使用WebRequestMethods.Ftp.MakeDirectory的方法。

例如:

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

如果你想创build嵌套的目录,这是答案

有没有干净的方法来检查一个文件夹是否存在于FTP中,所以你必须循环和创build一个文件夹的所有嵌套结构

 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... } } } 

像这样的东西:

 // remoteUri points out an ftp address ("ftp://server/thefoldertocreate") WebRequest request = WebRequest.Create(remoteUri); request.Method = WebRequestMethods.Ftp.MakeDirectory; WebResponse response = request.GetResponse(); 

(有点晚,多奇怪)

创buildFTP目录可能会很复杂,因为您必须检查目标文件夹是否存在。 您可能需要使用FTP库来检查并创build一个目录。 你可以看看这个: http : //www.componentpro.com/ftp.net/和这个例子: http : //www.componentpro.com/doc/ftp/Creating-a-new-directory-Synchronously热媒