NLST 响应中的 FileZilla 服务器 returns 文件夹名称

FileZilla server returns folder name in NLST response

我编写了一些连接到 FTP 服务器的代码。

我的问题是我在某些服务器上同时获得了文件夹和文件名,例如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);
}

我宁愿只得到 myfile.txt,因为真正的代码应该是这样 运行,但我不知道这是 FileZilla 设置还是其他设置。

ListDirectory 方法的 URL 通常应以斜线结尾。

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

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

如果 URL 类似于 ftp://ftp.example.com/parent/folder,没有斜线,FtpWebRequest 会:

CWD /parent
NLST folder

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

虽然带有斜线,但 FtpWebRequest 会:

CWD /parent/folder
NLST

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