Ответ 1
FtpWebRequest теперь включен в .NET Standard 2.0
Библиотека FluentFTP также совместима с последним стандартом .net 2.0
Можно ли загружать файлы/список файлов по протоколу FTP с помощью netcoreapp1.0?
Я знаю, я могу использовать FtpWebRequest или FluentFTP, если я нацелен на полную структуру .net45.
Мое решение, однако, основано на стандарте .net 1.6, и я не хочу поддерживать полную структуру только для того, чтобы иметь FTP.
FtpWebRequest теперь включен в .NET Standard 2.0
Библиотека FluentFTP также совместима с последним стандартом .net 2.0
Нет встроенных возможностей FTP для netcoreapp1.0 или netstandard1.6. FtpWebRequest
вернется в netstandard2.0.
FluentFTP теперь поддерживает ядро .NET/стандарт .NET 1.6. Если вы столкнулись с проблемами, пожалуйста, добавьте проблему в трекер, и мы поработаем над ней.
FtpWebRequest
теперь поддерживается в .NET Core 2.0. Посмотреть репозиторий GitHub
Пример использования:
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();
}
}
Где значение параметра method
установлено как член System.Net.WebRequestMethods.Ftp
.
Смотрите также примеры FTP
Вы можете попробовать использовать метод FtpWebRequest.
Образец:
public static byte[] DownloadFile(string url, string filePath, string user, string password)
{
var ftpServerUrl = string.Concat(url, filePath);
var request = (FtpWebRequest) WebRequest.Create(ftpServerUrl);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(user,password);
using (var response = (FtpWebResponse) request.GetResponse())
using (var responseStream = response.GetResponseStream())
using (var memoryStream = new MemoryStream())
{
responseStream?.CopyTo(memoryStream);
return memoryStream.ToArray();
}
}
Помните, что ftpServerUrl должен быть допустимым путем uri, содержащим путь к файлу. например, ftpServerUrl = "ftp://ftp.server/targetfile.txt"