文件上传FTP并写入内容、拉取FTP文件
封装类:FtpClient
//获取FTP中文件
public static List<string> ListFiles(string addr, string uid, string pwd)
{
var request = (FtpWebRequest)WebRequest.Create(addr);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential(uid, pwd);
using var response = (FtpWebResponse) request.GetResponse();
using var responseStream = response.GetResponseStream();
if (responseStream == null)
{
return null;
}
var reader = new StreamReader(responseStream);
var ret = new List<string>();
for (;;)
{
var str = reader.ReadLine();
if (string.IsNullOrEmpty(str))
{
break;
}
ret.Add(str);
}
return ret;
}
//读取文件
public static string GetFile(string addr, string uid, string pwd)
{
var request = (FtpWebRequest)WebRequest.Create(addr);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(uid, pwd);
using var response = (FtpWebResponse) request.GetResponse();
using var responseStream = response.GetResponseStream();
if (responseStream == null)
{
return null;
}
var reader = new StreamReader(responseStream);
return reader.ReadToEnd();
}
//上传文件
public static bool PutFile(string addr, string uid, string pwd, byte[] content)
{
var request = (FtpWebRequest)WebRequest.Create(addr);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(uid, pwd);
request.ContentLength = content.Length;
using (var requestStream = request.GetRequestStream())
{
requestStream.Write(content, 0, content.Length);
}
using var response = (FtpWebResponse) request.GetResponse();
var statusCode = (uint) response.StatusCode;
return statusCode >= 200 && statusCode <= 300;
}
///删除文件
public static bool DelFile(string addr, string uid, string pwd)
{
var request = (FtpWebRequest)WebRequest.Create(addr);
request.Method = WebRequestMethods.Ftp.DeleteFile;
request.Credentials = new NetworkCredential(uid, pwd);
using var response = (FtpWebResponse) request.GetResponse();
var statusCode = (uint) response.StatusCode;
return statusCode >= 200 && statusCode <= 300;
}
#region 从FTP拉取
private static async Task Pull()
{
Logger.Info("Pull");
foreach (var fileName in FtpClient.ListFiles(ftp, PullUid,PullPwd))
{
var ftpAddr = "ftp://127.0.0.1/" + fileName;
try
{
//获取文件内容
var content = FtpClient.GetFile(ftp, PullUid,PullPwd);
}
catch (Exception e)
{
}
FtpClient.DelFile(ftp, PullUid, PullPwd);//删除文件
}
}
#endregion
#region 上传FTP
private static async Task PushMsg()
{
Logger.Info("Push");
//定义文件名
var fileName = $"{ftp}/{}_Push_{DateTime.Now}.json";
var replys=[];//需要写入的内容
FtpClient.PutFile(fileName, PushUid, PushPwd,Encoding.Default.GetBytes(JsonConvert.SerializeObject(replys)));
}
#endregion