假设我想通过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中时,会得到最佳结果。
答案 0 :(得分:6)
是的,您可以使用REST
命令。
REST
设置后续文件传输应该开始的点。它通常用于重新启动中断的传输。该命令必须在RETR
或STOR
之前,因此在PORT
或PASV
之后。
来自FTP的RFC 959:
RESTART(REST)参数字段 表示服务器标记 文件传输将重新启动。这个 命令不会导致文件传输 但跳过文件到 指定的数据检查点。这个 命令应立即遵循 通过适当的FTP服务命令 这将导致文件传输 恢复。
答案 1 :(得分:1)
您应该查看GridFTP并行转移的方式。那是使用你想要的那种技术(实际上可能是代码,最好借用而不是自己从头开始实现)。