是否可以使用cURL获取文件的最后1MB数据?我知道我可以获得第一个MB,但是我需要最后一个.
解决方法:
是的,您可以通过在请求中指定HTTP Range标头来实现:
// $curl = curl_init(...);
$lower = $size - 1024 * 1024;
$upper = $size;
url_setopt($curl, CURLOPT_HTTPHEADER, array("Range: bytes=$lower-$upper"));
注意:您需要确保从其请求数据的服务器允许这样做.发出HEAD请求,并检查Accept-Ranges标头.
这是一个示例,您应该可以对其进行调整以满足自己的需求:
// Make HEAD request
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($curl);
preg_match('/^Content-Length: (\d+)/m', $data, $matches);
$size = (int) $matches[1];
$lower = $size - 1024 * 1024;
// Get last MB of data
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_HTTPGET, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Range: bytes=$lower-$size"));
$data = curl_exec($curl);
标签:curl,php
来源: https://codeday.me/bug/20191031/1976413.html