How To FTP A File Using C# And FtpWebRequest



TODO:

Have you ever wanted to FTP a file using C#?

 

SOLUTION:

 

private static bool FTPFile(string fileName, string shortFileName, ref string ErrMsg)
{
    FtpWebRequest request = null;
    FtpWebResponse response = null;
    byte[] fileContents = null;
    try
    {   
        request = (FtpWebRequest)WebRequest.Create(_ftpUrl + shortFileName);
        request.Method = WebRequestMethods.Ftp.UploadFile;

        if (fileName.ToUpper().EndsWith(".ZIP"))
            request.UseBinary = true;

        request.Credentials = new NetworkCredential(_ftpUserName, _ftpPassword);

        using (FileStream stream = File.OpenRead(fileName))
        {
            fileContents = new byte[stream.Length];
            stream.Read(fileContents, 0, fileContents.Length);
        }

        request.ContentLength = fileContents.Length;

        using (Stream requestStream = request.GetRequestStream())
        {
            requestStream.Write(fileContents, 0, fileContents.Length);
        }

        response = (FtpWebResponse)request.GetResponse();
        Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);

        response.Close();
        response = null;
        return true;
    }
    catch (Exception x)
    {
        ErrMsg = x.Message;
        return false;
    }
    finally
    {
        response = null;
        request = null;
    }
}

 

NOTES:

Note that I set the transfer mode to binary.  You can detect any file you want there as needed.



Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading