Edit for .net 6
FtpWebRequest
is deprecated in .net 6.0.
As such, consider using FluentFTP (previously known as System.Net.FtpClient).
It is released under The MIT License and available on NuGet.
For prior .net versions:
FtpWebRequest
is now supported in .NET Core 2.0. See GitHub repo
Example usage:
public static byte[] MakeRequest(
string method,
string uri,
string username,
string password,
byte[] requestBody = null)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
request.Credentials = new NetworkCredential(username, password);
request.Method = method;
//Other request settings (e.g. UsePassive, EnableSsl, Timeout set here)
if (requestBody != null)
{
using (MemoryStream requestMemStream = new MemoryStream(requestBody))
using (Stream requestStream = request.GetRequestStream())
{
requestMemStream.CopyTo(requestStream);
}
}
using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
using (MemoryStream responseBody = new MemoryStream())
{
response.GetResponseStream().CopyTo(responseBody);
return responseBody.ToArray();
}
}
Where the value for the method
parameter is set as a member of System.Net.WebRequestMethods.Ftp
.
See also FTP Examples