FTP协议中有没有像HTTP Range标题那样的东西?

时间:2010-03-29 14:24:06

标签: http ftp protocols

假设我想通过FTP传输一部分文件 - 是否可以使用标准FTP协议?

在HTTP中,我可以在请求中使用Range header来指定远程资源的数据范围。如果它是1mb文件,我可以要求600k到700k的字节。

FTP中有类似内容吗?我正在阅读the FTP RFC,看不到任何东西,但想确保我没有遗漏任何东西。

FTP中有一个重启命令 - 会起作用吗?


附录
获得Brian Bondy's answer below之后,我编写了一个包含FTP的只读Stream类。它支持基于REST动词通过FTP读取的资源上的Seek()和Read()操作。
http://cheeso.members.winisp.net/srcview.aspx?dir=streams&file=FtpReadStream.cs

找到它

Seek()的速度很慢,因为设置数据套接字需要很长时间。将该流包装在BufferedStream中时,会得到最佳结果。

2 个答案:

答案 0 :(得分:6)

是的,您可以使用REST命令。

REST设置后续文件传输应该开始的点。它通常用于重新启动中断的传输。该命令必须在RETRSTOR之前,因此在PORTPASV之后。

来自FTP的RFC 959:

  

RESTART(REST)参数字段   表示服务器标记   文件传输将重新启动。这个   命令不会导致文件传输   但跳过文件到   指定的数据检查点。这个   命令应立即遵循   通过适当的FTP服务命令   这将导致文件传输   恢复。

     

了解更多:   http://www.faqs.org/rfcs/rfc959.html#ixzz0jZp8azux

答案 1 :(得分:1)

您应该查看GridFTP并行转移的方式。那是使用你想要的那种技术(实际上可能是代码,最好借用而不是自己从头开始实现)。