 <p>You can also try this code, applies for other file extensions too.</p> <pre><code>string ftpUrl = "ftp://server//foldername/fileName.ext"; string fileToUploaded = "c:/fileName.ext"; FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl); request.Proxy = new WebProxy(); //-----Proxy bypassing(The requested FTP command is not supported when using HTTP proxy) request.Method = WebRequestMethods.Ftp.UploadFile; request.Credentials = new NetworkCredential(ftpUsername, ftpPassword); using (var requestStream = request.GetRequestStream()) { using (var input = File.OpenRead(fileToBeUploaded)) { input.CopyTo(requestStream); } } </code></pre> <p>Try streaming the data, instead of loading it all into memory separately. Also <code>using</code> statement helps to dispose the resources perfectly.</p>