netcoreapp1.0を使用してFTPプロトコル経由でファイルをダウンロードしたりファイルをリストしたりできますか?
フル。net45フレームワークを対象とする場合は FtpWebRequest または FluentFTP を使用できます。
しかし、私の解決策はすべて.net標準1.6に基づいており、FTPを使用するためだけに完全なフレームワークをサポートする必要はありません。
FtpWebRequestが。NET Standard 2.に含まれるようになりました
FluentFTPライブラリは最新の.net標準2.0とも互換性があります
Netcoreapp1.0またはnetstandard1.6には、そのまま使用できるFTP機能はありません。 FtpWebRequest
はnetstandard2.0で返されます。
FluentFTP は.NETコア/ .NET標準1.6をサポートするようになりました。問題が発生した場合は、問題トラッカーに問題を追加してください。問題を解決します。
FtpWebRequest
が.NET Core 2.0でサポートされるようになりました。 GitHub repo を参照してください
使用例:
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"