Вы можете использовать FtpWebRequest ;однако это довольно низкий уровень.Существует класс более высокого уровня WebClient , который требует гораздо меньше кода для многих сценариев;однако по умолчанию он не поддерживает FTP / SSL.К счастью, вы можете заставить WebClient
работать с FTP / SSL, зарегистрировав свой собственный префикс:
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;
}
}
После этого вы можете использовать WebClient
почти как обычно, за исключением того, что ваши URI начинаются сftps: // "вместо" ftp: // ".Единственное предостережение в том, что вы должны указать параметр method
, поскольку он не будет использоваться по умолчанию.Например,
using (var webClient = new WebClient()) {
// Note here that the second parameter can't be null.
webClient.UploadFileAsync(uploadUri, WebRequestMethods.Ftp.UploadFile, fileName, state);
}