代码之家  ›  专栏  ›  技术社区  ›  Cheeso

在ftp协议中是否有类似于http range header的内容?

  •  4
  • Cheeso  · 技术社区  · 15 年前

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

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

    在ftp中有类似的内容吗?我在看书 the FTP RFC ,什么也看不见,但要确保我没有遗漏任何东西。

    在ftp中有一个重启命令-可以吗?


    附录
    在得到 Brian Bondy's answer below ,我编写了一个包装ftp的只读流类。它支持对通过ftp读取的资源执行seek()和read()操作,基于 REST 动词。
    找到它在 http://cheeso.members.winisp.net/srcview.aspx?dir=streams&file=FtpReadStream.cs

    seek()的速度非常慢,因为设置数据套接字需要很长时间。最好的结果是当你用 BufferedStream .

    2 回复  |  直到 15 年前
        1
  •  6
  •   Brian R. Bondy    15 年前

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

    休息 设置后续文件传输应开始的点。它通常用于重新启动中断的传输。命令必须在 RETR STOR 所以,在 PORT PASV .

    从ftp的rfc 959:

    重新启动(rest)参数字段 表示服务器标记 文件传输将重新启动。这个 命令不会导致文件传输 但是跳过文件到 指定的数据检查点。这个 立即听从指挥 通过相应的ftp服务命令 这将导致文件传输到 继续。

    阅读更多信息: http://www.faqs.org/rfcs/rfc959.html#ixzz0jZp8azux

        2
  •  1
  •   Donal Fellows    15 年前

    你应该看看 GridFTP 进行并行传输。这是在使用您想要的技术(实际上可能是代码,最好是借用而不是自己从头实现)。