C#获取FTP服务器上的文件
在文件上传到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的,可以查出来