FileZilla服务器在NLST响应中返回文件夹名称

时间:2017-05-03 11:04:43

标签: c# .net ftp filezilla ftpwebrequest

我已经制作了一些连接到FTP服务器的代码。

我的问题是,我对某些服务器同时获取文件夹和文件名,例如def updateXMLTag (tag, value): xmlValue = root.xpath(tag) xmlValue[0].text = str(value) ,其他人只需获得myfolder\myfile.txt

myfile.txt

我希望我得到var request = (FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/myfolder"); request.Method = WebRequestMethods.Ftp.ListDirectory; var ftpResponse = (FtpWebResponse) request.GetResponse(); var ftpResponeStream = ftpResponse.GetResponseStream(); var ftpStreamReader = new StreamReader(ftpResponeStream); string line; while ((line = ftpStreamReader.ReadLine()) != null) { Console.WriteLine(line); } ,因为这是真正的代码应该运行的方式,但我不知道,如果这是一个FileZilla设置或其他。

1 个答案:

答案 0 :(得分:1)

ListDirectory方法的网址通常应以斜杠结尾。

没有斜杠,结果往往不确定,主要取决于FTP服务器实现。

(FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/myfolder/"); 

使用ftp://ftp.example.com/parent/folder之类的网址,没有斜杠,FtpWebRequest会:

CWD /parent
NLST folder

在这种情况下,某些FTP服务器在列表中包含folder,而有些则没有。

使用斜杠时,FtpWebRequest会执行:

CWD /parent/folder
NLST

在这种情况下,列表包含裸文件名。