Comment créer un répertoire sur un serveur FTP utilisant C #?

Quel est un moyen facile de créer un répertoire sur un serveur FTP en utilisant C #?

J’ai compris comment télécharger un fichier dans un dossier existant comme celui-ci:

using (WebClient webClient = new WebClient()) { ssortingng filePath = "d:/users/abrien/file.txt"; webClient.UploadFile("ftp://10.128.101.78/users/file.txt", filePath); } 

Cependant, si je souhaite télécharger vers les users/abrien , je reçois une WebException indiquant que le fichier est indisponible. Je suppose que c’est parce que je dois créer le nouveau dossier avant de télécharger mon fichier, mais WebClient ne semble pas avoir de méthode pour y parvenir.

Utilisez FtpWebRequest , avec une méthode de WebRequestMethods.Ftp.MakeDirectory .

Par exemple:

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

Voici la réponse si vous souhaitez créer des répertoires nesteds

Il n’y a pas de moyen propre de vérifier si un dossier existe sur le ftp, vous devez donc boucler et créer toute la structure nestede, un dossier à la fois

 public static void MakeFTPDir(ssortingng ftpAddress, ssortingng pathToCreate, ssortingng login, ssortingng password, byte[] fileContents, ssortingng ftpProxy = null) { FtpWebRequest reqFTP = null; Stream ftpStream = null; ssortingng[] subDirs = pathToCreate.Split('/'); ssortingng currentDir = ssortingng.Format("ftp://{0}", ftpAddress); foreach (ssortingng 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... } } } 

Quelque chose comme ça:

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

(un peu en retard. comment bizarre)

Créer un répertoire FTP peut être compliqué puisque vous devez vérifier si le dossier de destination existe ou non. Vous devrez peut-être utiliser une bibliothèque FTP pour vérifier et créer un répertoire. Vous pouvez consulter celui-ci: http://www.componentpro.com/ftp.net/ et cet exemple: http://www.componentpro.com/doc/ftp/Creating-a-new-directory-Synchronously .htm