设为首页 收藏本站
查看: 782|回复: 0

用AppendFile命令判断能否删除FTP上的文件

[复制链接]

尚未签到

发表于 2015-5-29 06:03:12 | 显示全部楼层 |阅读模式
  FTP:用APPE(AppendFile)命令判断能否删除FTP上的文件
  MFC Code: http://files.iyunv.com/zhaowd2001/FTPCommand51026.zip
  需求:
    我们有个程序,需要判断能否删除FTP上的指定文件。例如:假设FTP服务器是13.187.78.144,FTP虚拟目录是temp, temp下有个文件是a.txt,登录得用户名是dongdong,口令是dong.
  办法:
    我们的办法是用FTP的APPE来判断是否能修改a.txt,如果能修改的话,那么就能删除a.txt.
  FTP没有返回关于a.txt能否被删除的信息。
  一开始我们用FTP的重命名来把a.txt改名为其他名字(假设改为b.txt),如果修改成功,那么应该能删除a.txt.
  但是,如果同时考虑IIS 5 和Linux下的VSFTPD,问题有点复杂了。
  在IIS 5下面,如果a.txt的属性被设置成只读的,那么通过FTP的RNTO命令,你可以把a.txt随便改名成其它文件(例如b.txt),但是你不能通过FTP删除a.txt.
  在VSFTPD下面,如果a.txt所在的目录temp的属性被设置成只读的,那么你是不能通过FTP的RNTO命令把a.txt改名的。通过FTP删除a.txt也会失败。如果a.txt所在的目录temp可以读写,那么不论a.txt是否可读写,你都可以重命名或者删除a.txt。
  结论:
    总之,用FTP的RNTO命令判断是否能删除a.txt会很狼狈,并且落个失败的下场。
    问题1:使用APPE命令的时候要先判断a.txt是否已经存在。如果a.txt不存在,并且你有写的权限的话,你会在FTP上生成一个新的a.txt文件。
    问题2:在发送APPE命令之前,必须发送PORT或PASV命令。
   
    除了APPE(AppendFile)命令,不知道你还有其它方法吗?有的话,请联系我zhaowd2001@yahoo.com.
  
*****************************************测试报告***************************************

  
  为了判断能否删除FTP上的文件,测试了不同的操作在Linux和Windows下的差别。
  假设FTP上的文件名是 c.
  rename to self :指用RNFR和RNTO命令,重命名一个文件到自身。执行RNFR c后立即执行 RNTO c
  rename to tmp  :指用RNFR和RNTO命令,重命名文件到其它文件。执行RNFR c后立即执行 RNTO c.tmp
  PASV AppendFile:指用APPE命令,添加0个字节到文件。先执行PASV,然后执行APPE c命令。
  linux vsFTPd   :指使用linux下的vsFTPd服务器做为测试服务器。
  windows 2000 iis :指使用windows 2000 iis 5做为FTP服务器。
  linux 下的dire=r :表示目录权限用chmod a-w设置为只读。
  linux 下的dire=rw:表示目录权限用chmod a+rw设置为可读写。
  linux 下的file=rw:表示文件c的权限用chmod a+rw设置为可读写。
  linux 下的file=r :表示文件c的权限用chmod a-w设置为只读。
  windows下的dire right=r :表示给登录FTP的windows帐户赋予读FTP目录的权限。这和把目录的属性设置为read only不同。
  windows下的dire right=rw:表示给登录FTP的windows帐户赋予读写FTP目录的权限。这和把目录的属性设置为read only不同。
  windows下的file=normal  :表示把文件c的属性设置为Normal.也就是普通文件。
  windows下的file=readonly:表示把文件c的属性设置为只读。这和权限不同。
  下表是各种情况的测试结果,T代表成功,F代表失败。
 
linux vsFTPd

windows 2000 iis 5

dire=r
file=rw
dire=rw
file=rw
dire=r
file=r
dire=rw
file=r
dire right=r
file right=rw
dire right=r
file right=r
dire right=rw
file right=rw
dire right=rw
file right=r
file = normalfile = readonlyfile = normalfile = readonlyfile = normalfile = readonlyfile = normalfile = readonly
rename to selfTTTTFFF TTTT
rename to tmpFTFTFFF TTTT
PASV AppendFileTTFFTFF TFFF
deleteFTFTTFF TFTF
  从上表可以看出,即使同时使用rename to self、rename to tmp和PASV AppendFile三种操作,也不能唯一的确定delete成功或失败。看来,要判断能否成功删除FTP上的文件,还是比较麻烦的。我还没有找出好的办法。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-71619-1-1.html 上篇帖子: asp.net 服务器 上传文件到 FTP服务器 下篇帖子: 文件上传类(包含FTP方式和本地方式),可多文件上传,上传结果以json格式数据返回(可上传最大2G文件)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表