.NET FtpWebRequest NLST 没有列出目录 - 但 LIST 有

.NET FtpWebRequest NLST isn't listing directories - Yet LIST does

FTP 根内容:

My File 1.txt
Your File 2.txt
Random File 3.txt
Another Random File 4.txt
Folder1
Folder 2
My Folder 3
Your Folder 4

Net.WebRequestMethods.Ftp.ListDirectory 结果:

My File 1.txt
Your File 2.txt
Random File 3.txt
Another Random File 4.txt

WebRequestMethods.Ftp.ListDirectoryDetails 结果:

drwxrwxrwx   1 user     group           0 Mar 22 11:32 Folder1
drwxrwxrwx   1 user     group           0 Mar 22 11:33 Folder 2
drwxrwxrwx   1 user     group           0 Mar 22 11:33 My Folder 3
drwxrwxrwx   1 user     group           0 Mar 22 11:33 Your Folder 4
-rw-rw-rw-   1 user     group    234003230 Mar 22 14:12 My File 1.txt
-rw-rw-rw-   1 user     group    234003230 Mar 22 14:12 Your File 2.txt
-rw-rw-rw-   1 user     group    234003230 Mar 22 14:12 Random File 3.txt
-rw-rw-rw-   1 user     group    234003230 Mar 22 14:12 Another Random File 4.txt

通常 NSLT 会为我提供所有内容(包括文件夹)的列表。

NLST 只给我 folder/file 名称,这使得从 LIST 结果中提取日期、文件大小等内容变得很方便。

我可以提供代码示例。然而,这似乎是一个 FTP 设置。只是不确定去哪里看。

确实有些 FTP 服务器仅在 NLST 列表中包含文件,例如 HPUX ftpd.

原因是 NLST 被命令行 ftp 客户端用来执行 mget 命令。典型的 mget 实现无法递归下载文件(它实际上无法判断特定 "name" 是目录还是文件)。所以 mget 失败,如果它在列表中得到一个目录。

虽然可以在服务器端配置该行为,但没有标准的方法可以在客户端控制它。