.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
失败,如果它在列表中得到一个目录。
虽然可以在服务器端配置该行为,但没有标准的方法可以在客户端控制它。
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
失败,如果它在列表中得到一个目录。
虽然可以在服务器端配置该行为,但没有标准的方法可以在客户端控制它。