Ser*_*kov 11 c# ftp ftp-client .net-core
我可以使用netcoreapp1.0通过FTP协议下载文件/列表文件吗?
我知道,如果我的目标是完整的.net45框架,我可以使用FtpWebRequest或FluentFTP.
但是,我的解决方案都基于.net标准1.6,我不想仅仅为了拥有FTP而支持完整框架.
FtpWebRequest现在包含在.NET Standard 2.0中
FluentFTP库还兼容最新的.net标准2.0
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();
}
}
Run Code Online (Sandbox Code Playgroud)
其中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();
}
}
Run Code Online (Sandbox Code Playgroud)
请记住,ftpServerUrl 必须是包含文件路径的有效 uri 路径。例如ftpServerUrl = "ftp://ftp.server/targetfile.txt"
| 归档时间: |
|
| 查看次数: |
12271 次 |
| 最近记录: |