在文件上传到FTP服务器时会出现没传上去的情况,我不知道为什么会出现这种情况,不知怎么解决就写了段程序,目的是执行完上传以后,去服务器读一遍,看一下有没有上传成功,没成功的话在传一次
首先看下我的FTP服务器页面以及文件
我框住的是文件名和文件目录
我为了方便看到结果,将查出的数据放到一个下拉列表中。所以定义一个返回类型为list的方法
/// <summary>
/// 从ftp服务器上获得文件列表
/// </summary>
/// <param name="RequedstPath">服务器下的相对路径</param>
/// <returns></returns>
public static List<string> GetFile(string RequedstPath= "/Test_Data/SMARC_PTZ/2023/03/17") ①
{
List<string> strs = new List<string>();
try
{
string uri = "ftp://192.168.1.100" + RequedstPath; //目标路径 path为服务器地址 ②
FtpWebRequest reqFTP = (FtpWebRequest)WebRequest.Create(new Uri(uri));
// ftp用户名和密码
reqFTP.Credentials = new NetworkCredential("用户名", "密码"); ③
reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
WebResponse response = reqFTP.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());//中文文件名
string line = reader.ReadLine(); ④
while (line != null)
{
if (!line.Contains("<DIR>"))
{
string msg = line.Substring(0).Trim();
msg = msg.Substring(msg.Length - 24, 24); ⑤
strs.Add(msg);
}
line = reader.ReadLine();
}
reader.Close();
response.Close();
return strs;
}
catch (Exception ex)
{
Console.WriteLine("获取文件出错:" + ex.Message);
}
return strs;
}
看详解:
①:RequedstPath是我FTP服务器上要查询的文件所在的目录,做成变量传入即可
②:uri即我的FTP服务器地址,假设是192.168.1.100
③:用户名和密码输入自己的就行了
④:开始读取了
⑤:读取出来后我要一行一行的处理,因为读出来并不是只有文件名,还有大小、类型、修改时间,我把多余的字符串截掉只取有用的
到这里就完成了,把读出来的数据放到list里然后返回出去,再放到combox下拉框效果是这样的
是ok的,可以查出来
标签:FTP,string,C#,msg,服务器,line,reqFTP From: https://blog.51cto.com/u_16371710/9238049