zhanghai / MaterialFiles

Material Design file manager for Android
https://play.google.com/store/apps/details?id=me.zhanghai.android.files
GNU General Public License v3.0
6.07k stars 410 forks source link

FTP客户端命令LIST -a中的参数-a符合协议标准吗? #1133

Closed lbp0 closed 9 months ago

lbp0 commented 9 months ago

我最近正在编写一个FTP服务器,并用这个项目进行了访问测试。但是我发现这个项目并没法读取到服务器里的数据。从谷歌play下载的最新版(1.6.2)app中,我注意到这个项目里FTP客户端LIST命令后有参数-a,这符合协议标准吗?

我找到的最新有关FTP的协议标准是RFC 5797,其中提到了RFC 1123对LIST命令的更新,但我并没有发现在RFC 1123的命令更新中,有对命令的用法做出了什么改变。随后RFC 1123便是引用了经典的RFC 959,我相信这个参数在RFC 959里应该是不合法的。

还请大家帮忙确认一下是否真的是这样,如果真是这样的话这个-a参数可能并不是一个标准的协议参数。使用一些更现代的命令取代LIST或者干脆移除-a参数是不是更为恰当?

zhanghai commented 9 months ago

我注意到这个项目里FTP客户端LIST命令后有参数-a,这符合协议标准吗?

大概确实是非标准的,但 Commons Net FTPClient.setListHiddenFiles() 提供了它,并且确实有些服务器在没有它时不会返回所有文件。我认为如果要在“因为没看到其实存在的文件而作出错误的文件操作”和“显示错误”之间取舍,前者要安全很多。并且 LIST 本来就该被取代了。

使用一些更现代的命令取代LIST或者干脆移除-a参数是不是更为恰当?

所以本项目默认使用的是 MLSTMLSD,并且我记得大多数服务器都是支持的。

lbp0 commented 9 months ago

好的好的,谢谢大佬解答🎉