php curl скачать файл и получить заголовок
Я хочу скачать файл через curl в php и получить заголовки этого.
// handler
$h = fopen($filePath , 'w');
// curl
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_FILE, $h);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, array($this, 'getAllHeaders'));
$a = curl_exec($ch); // return false;
curl_close($ch);
fclose($h);
public function getAllHeaders($ch, $header)
{
// check for 200 ok
if (preg_match('/HTTP[\/\.0-9\s\t]+200[\s\t]+OK/i', $header)) {
// header 200 found
$this->header200 = true;
}
// grab all headers keys and values
preg_match('/^(?P<key>[a-z0-9\-]+)\:(?P<value>.*)$/i', $header, $matches);
// cycle
foreach ($matches as $key => $value) {
if (!is_numeric($key)) {
$this->headers[strtolower(trim($key))] = trim($value);
}
}
// headers
return $this->headers;
}
но я не могу получить заголовки и файл не будет загружен. как я могу решить это.
1 ответ
Следующие ограничения применяются к getAllHeaders(), которые вы не удовлетворяете:
Данные заголовка должны быть записаны при использовании этой функции обратного вызова. Вернуть количество записанных байтов.
Источник: php.net
Как насчет:
public function getAllHeaders($ch, $header)
{
// store header here (how about storing in a field that is an array of headers?)
return strlen($header);
}