gpt4 book ai didi

php - 如何使用 cURL 部分下载远程文件?

转载 作者:IT王子 更新时间:2023-10-28 23:51:14 28 4
gpt4 key购买 nike

是否可以使用 cURL 部分下载远程文件?比方说,远程文件的实际文件大小是 1000 KB。我怎样才能只下载它的前 500 KB?

最佳答案

您还可以使用 php-curl 扩展设置范围 header 参数。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.spiegel.de/');
curl_setopt($ch, CURLOPT_RANGE, '0-500');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
echo $result;

但如前所述,如果服务器不接受此 header 但发送整个文件,curl 将下载所有文件。例如。 http://www.php.net忽略标题。但是您可以(另外)设置一个写入函数回调并在收到更多数据时中止请求,例如

// php 5.3+ only
// use function writefn($ch, $chunk) { ... } for earlier versions
$writefn = function($ch, $chunk) {
static $data='';
static $limit = 500; // 500 bytes, it's only a test

$len = strlen($data) + strlen($chunk);
if ($len >= $limit ) {
$data .= substr($chunk, 0, $limit-strlen($data));
echo strlen($data) , ' ', $data;
return -1;
}

$data .= $chunk;
return strlen($chunk);
};

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.php.net/');
curl_setopt($ch, CURLOPT_RANGE, '0-500');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, $writefn);
$result = curl_exec($ch);
curl_close($ch);

关于php - 如何使用 cURL 部分下载远程文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2032924/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com