【问题标题】:Is it possible do only download a portion of a binary file是否可以只下载二进制文件的一部分
【发布时间】:2011-05-02 00:25:58
【问题描述】:

关于从远程服务器下载 xml 文件的一个小问题。 我正在使用 curl 来实现这一点。

我在这些 xml 文件中需要的信息位于前几行代码中。 现在我的问题是:

是否可以从这些 xml 文件中只下载一部分(或定义数量的字节),所以我只有前(比如说)30 行。

那些 xml 文件在 100 kb 到 12 mb 之间,所以你明白,能够最小化 curl 请求的带宽会更有效(我说的是每天至少 1000 个 xml 文件)。

谢谢

【问题讨论】:

  • 请注意,部分 XML 文件将是无效的 XML,您将无法使用 XML 解析器对其进行解析。
  • 将使用我自己的解析器,所以不会有问题

标签: php curl binary


【解决方案1】:

查看--range option for cURL,您可以这样做。

对于 HTTP,这将要求远程服务器遵守 HTTP/1.1 Range requests - 例如,如果您指定范围 -r0-10,则将传输以下标头

Range: bytes=0-10

如果服务器不想遵守,它将返回整个文件。

【讨论】:

  • 如果您连接的服务器不支持 CURLOPT_RANGE 标志,这可能不起作用。
  • 如果是这种情况,有没有办法解决这个问题?
  • @[Paolo Mulder] 最好在下载后检查文件长度,如果由于服务器忽略了您截断的范围选项而超出预期长度。
  • @Paulo - 是的,如果您只想要文件的 start,则不需要范围请求。您可以简单地编写一个基本的 HTTP 客户端来发送请求,然后在您阅读足够多的行时关闭连接。请参阅 fsockopen 上的 PHP 手册页,您应该在那里找到一些示例代码。
猜你喜欢
  • 2010-11-11
  • 2017-06-18
  • 2020-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多