Search code examples
c#.netftpwebclient

How do I create a directory on FTP server using C#?


What's an easy way to create a directory on an FTP server using C#?

I figured out how to upload a file to an already existing folder like this:

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

However, if I want to upload to users/abrien, I get a WebException saying the file is unavailable. I assume this is because I need to create the new folder before uploading my file, but WebClient doesn't seem to have any methods to accomplish that.


Solution

  • Use FtpWebRequest, with a method of WebRequestMethods.Ftp.MakeDirectory.

    For example:

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