【问题标题】:FTP Client with pause and resume feature具有暂停和恢复功能的 FTP 客户端
【发布时间】:2017-04-11 15:35:41
【问题描述】:

我需要实现具有暂停和恢复功能的 FTP 客户端。

这个帖子提到了如何为 HTTP 上传 File upload pause and resume in Android 完成。

FTP 上传也可以做类似的事情吗?
我将假设服务器也需要支持此功能。对吗?
一些建议会有所帮助。

【问题讨论】:

  • 取决于暂停应该多长时间/“暂停”是什么意思。如果很短(几秒到几分钟),只需暂停写入/读取流。如果很长(几分钟到几小时甚至更长时间),则必须执行传输恢复。
  • 另外,你想用什么语言来实现这个?
  • 语言是c++。暂停可以超过 5 分钟。我认为这也需要服务器端的支持,对吧?在这种情况下如何实现传输恢复,一些指针可能会有所帮助。

标签: ftp


【解决方案1】:

FTP 没有像 HTTP 使用 Content-Range 那样只传输部分文件的功能。但是,如果您想停止上传,您可以简单地关闭数据连接并恢复您将首先发出SIZE 命令来检测上传的文件大小,然后发出REST 命令,其中包含您要继续的文件位置上传。由于无法预先通知服务器最终文件大小,您可能应该首先上传到具有临时名称的文件,并在上传完成后使用RNFRRNTO 将其重命名为最终文件名字。
有关这些 FTP 命令的更多信息,请查看标准,即RFC 959

【讨论】:

  • 有一个FTP RANG 命令的(过期)草案,用于文件范围的请求。
  • @Castaglia:很有趣。但与我的建议相反,这需要服务器的明确支持,我不知道哪个服务器实现了这个命令。
【解决方案2】:

要恢复之前中断的传输:

  • 检查已上传文件部分的大小。您可以使用SIZE 命令或(如果您的 FTP 服务器支持)MLST 命令。

  • 使用APPE 开始新的上传,而不是STOR。寻找本地源文件流到已经上传的偏移量。

    为此,FTP 服务器必须支持APPE 命令(大多数服务器都支持)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多