Searchable:
FTP Upload ftpWebRequest Proxy
FTP command is not supported when using HTTP proxy
In the article below I will cover 2 topics
1. C# & Windows Command-Line FTP Upload with No Proxy Server
2. C# & Windows Command-Line FTP Upload with Proxy Server
Not covered here: Secure FTP / SFTP
Sample Attributes:
· UploadFilePath = “\\servername\folder\file.name”
· Proxy Server = “ftp://proxy.server/”
· FTP Target Server = ftp.target.com
· FTP User = “User”
· FTP Password = “Password”
with No Proxy Server
· Windows Command-Line
> ftp ftp.target.com
> ftp User: User
> ftp Password: Password
> ftp put \\servername\folder\file.name
> ftp dir
(result: file.name listed)
> ftp del file.name
> ftp dir
(result: file.name deleted)
> ftp quit
· C#
//-----------------
//Start FTP via _TargetFtpProxy
//-----------------
string relPath = Path.GetFileName(\\servername\folder\file.name);
//result: relPath = “file.name”
FtpWebRequest ftpWebRequest = (FtpWebRequest)WebRequest.Create("ftp.target.com/file.name);
ftpWebRequest.Method = WebRequestMethods.Ftp.UploadFile;
//-----------------
//user - password
//-----------------
ftpWebRequest.Credentials = new NetworkCredential("user, "password");
//-----------------
// set proxy = null!
//-----------------
ftpWebRequest.Proxy = null;
//-----------------
// Copy the contents of the file to the request stream.
//-----------------
StreamReader sourceStream = new StreamReader(“\\servername\folder\file.name”);
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
ftpWebRequest.ContentLength = fileContents.Length;
//-----------------
// transer the stream stream.
//-----------------
Stream requestStream = ftpWebRequest.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
//-----------------
// Look at the response
results
//-----------------
FtpWebResponse response = (FtpWebResponse)ftpWebRequest.GetResponse();
Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);
with Proxy Server
· Windows Command-Line
> ftp proxy.server
> ftp User:
[email protected]
> ftp Password: Password
> ftp put \\servername\folder\file.name
> ftp dir
(result: file.name listed)
> ftp del file.name
> ftp dir
(result: file.name deleted)
> ftp quit
· C#
//-----------------
//Start FTP via _TargetFtpProxy
//-----------------
string relPath = Path.GetFileName(\\servername\folder\file.name);
//result: relPath = “file.name”
FtpWebRequest ftpWebRequest = (FtpWebRequest)WebRequest.Create("ftp://proxy.server/" + relPath);
ftpWebRequest.Method = WebRequestMethods.Ftp.UploadFile;
//-----------------
//user - password
//-----------------
ftpWebRequest.Credentials = new NetworkCredential("
[email protected], "password");
//-----------------
// set proxy = null!
//-----------------
ftpWebRequest.Proxy = null;
//-----------------
// Copy the contents of the file to the request stream.
//-----------------
StreamReader sourceStream = new StreamReader(“\\servername\folder\file.name”);
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
ftpWebRequest.ContentLength = fileContents.Length;
//-----------------
// transer the stream stream.
//-----------------
Stream requestStream = ftpWebRequest.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
//-----------------
// Look at the response
results
//-----------------
FtpWebResponse response = (FtpWebResponse)ftpWebRequest.GetResponse();
Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);