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.