Puede usar FtpWebRequest; sin embargo, este es un nivel bastante bajo. Hay una clase de nivel superior WebClient, que requiere mucho menos código para muchos escenarios; sin embargo, no es compatible con FTP/SSL de forma predeterminada. Afortunadamente, usted puede hacer WebClient
trabajo con FTP/SSL mediante el registro de su propio prefijo:
private void RegisterFtps()
{
WebRequest.RegisterPrefix("ftps", new FtpsWebRequestCreator());
}
private sealed class FtpsWebRequestCreator : IWebRequestCreate
{
public WebRequest Create(Uri uri)
{
FtpWebRequest webRequest = (FtpWebRequest)WebRequest.Create(uri.AbsoluteUri.Remove(3, 1)); // Removes the "s" in "ftps://".
webRequest.EnableSsl = true;
return webRequest;
}
}
Una vez hecho esto, puede utilizar WebClient
casi como normal, excepto que sus URIs comienzan con "ftps: //" en lugar de "ftp: //". La única advertencia es que debe especificar el parámetro method
, ya que no habrá uno predeterminado. P.ej.
using (var webClient = new WebClient()) {
// Note here that the second parameter can't be null.
webClient.UploadFileAsync(uploadUri, WebRequestMethods.Ftp.UploadFile, fileName, state);
}
Sólo para dar a conocer la versión gratuita no soporta FTPS, la versión Pro hace – tsukimi