. net Core中的FTP客户端
本文关键字:客户端 FTP 中的 Core net | 更新日期: 2023-09-27 18:18:06
我可以使用netcoreapp1.0通过FTP协议下载文件/列表文件吗?
我知道,如果我的目标是完整的.net45框架,我可以使用FtpWebRequest或FluentFTP。
我的解决方案,然而,都是基于。net标准1.6,我不想支持完整的框架,只是有FTP。
FluentFTP现在支持。net core/。net standard 1.6。如果您遇到问题,请在问题跟踪器中添加问题,我们会解决它。
编辑1:使用示例:https://github.com/robinrodricks/FluentFTP/tree/master/FluentFTP.CSharpExamples
编辑。net 6
FtpWebRequest
在。net 6.0中已弃用。
因此,考虑使用FluentFTP(以前称为System.Net.FtpClient)。
它是在MIT许可证下发布的,可以在NuGet上获得。
对于以前的。net版本:
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现在包含在中。. NET Standard 2.0
FluentFTP库也兼容最新的。net标准2.0
netcoreapp1.0或netstandard1.6没有开箱即用的FTP功能。FtpWebRequest
将在netstandard2.0中返回
您可以尝试使用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"