FTP的使用“追加”命令(Use of FTP “append” command)

2019-10-20 17:42发布

我要上传文件到FTP服务器编程(C ++)。 如果在上传文件的连接丢失,我不想上传从头文件,但只上载我还没有发的部分。

是否APPE命令满足我的需求? 什么名单的FTP命令我应该用什么呢? 如何?

Answer 1:

检查RFC并专门APPEND命令:

此命令使服务器DTP接受经过数据连接传输数据,并把数据存储在服务器站点中的文件。 如果路径中指定的文件存在于服务器站点,则数据将被追加到该文件; 否则指定路径的文件应在服务器站点上创建。

需要注意的是,你不能简单地再追加相同的文件。 你应该把剩余的字节数。 也就是说,继续在相同的位置,当连接丢失。



Answer 2:

我使用Google细节约APPE FTP命令,究竟它,但大多数网站只是国家只追加。 然后,我尝试了命令,以确保它像预期的那样。

我设计用来从一台机器一个日志文件发送到服务器报告FTP自动发送。 我只想发送日志文件的最后一行。

当使用APPE命令,它实际上添加整个文件内容,并追加到服务器现有的一个。 这将导致重复的行条目。

答案是:做文件的恢复,如果持续传输失败,对于没有这样的命令,但我们需要使用命令序列来实现它。

这里的关键是,如果你正在使用APPE命令或使用命令REST寻求您的本地文件到最后上传字节。 其余部分将开始对特定字节开始移仓。 我最终了这个解决方案建立连接后执行:

使用APPE(我从FileZilla中记录的想法):

  1. 使用Size来检查文件存在,并把它作为继续标记。
  2. 打开本地文件系统,并寻求上的标记。
  3. 使用APPE上传和FTP服务器将自动追加它。

使用STOR与REST(我从edtFTPnet的想法):

  1. 使用Size来检查文件存在,并把它作为继续标记。
  2. 发送REST与你SIZE得到告诉FTP服务器上的位置开始写的结果。
  3. 打开本地文件系统,并寻求上的标记。
  4. 使用STOR正常上传。

请注意,并非两种方式,所有的FTP服务器的支持。 我看到FileZilla中切换,这取决于在服务器上的这种双向的。 我的观察表明,使用REST的标准方式。 下载也可以使用REST启动对给定的字节位置下载。

请记住,使用ASCII传输类型的简历支持会产生意想不到的结果,因为Unix和Windows系统有不同的换行字节数。

试图操纵FileZilla中看到的行为在日志中。 您还可以查看他们是如何做到这一点的.NET库这个有用的开源的FTP。 edtFTPnet



文章来源: Use of FTP “append” command