2013-11-17 3 views
0

Я написал код, чтобы получить файл через curl. Я хочу только заголовки и не собственно сам файлПолучить заголовки как часть CURL

$info = curl_init() or die('error 1'); 
    curl_setopt($info, CURLOPT_RETURNTRANSFER, 1); 
    //curl_setopt($info, CURLOPT_PORT , 8089); 
    curl_setopt($info, CURLOPT_URL, $url); 
    curl_setopt($info, CURLOPT_HEADER,true); 
    curl_setopt($info, CURLOPT_CONNECTTIMEOUT, 30); 
     curl_setopt($info, CURLOPT_NOBODY, true); 
     //curl_setopt($info, CURLOPT_SSL_VERIFYPEER, 0); 
     curl_exec($info); 
     if(!curl_errno($info)){ 
      $response = curl_getinfo($info); 
      echo "<pre>"; 
      print_r(get_headers($response)); 
      echo "</pre>"; 
     }else{ 
      echo "error!"; 
      echo "<br>" . curl_error($info); 
     } 

Однако ответ, возвращаемый этим не содержит какой-либо информации, которая должна быть в заголовке - например, имя файла

array(26) { 
    ["url"]=> 
    string(55) "https://www.filepicker.io/api/file/CjDfxG0WSmGiY3O2eKDE" 
    ["content_type"]=> 
    string(9) "image/png" 
    ["http_code"]=> 
    int(200) 
    ["header_size"]=> 
    int(840) 
    ["request_size"]=> 
    int(86) 


["filetime"]=> 
    int(-1) 
    ["ssl_verify_result"]=> 
    int(0) 
    ["redirect_count"]=> 
    int(0) 
    ["total_time"]=> 
    float(1.578048) 
    ["namelookup_time"]=> 
    float(0.000494) 
    ["connect_time"]=> 
    float(0.026931) 
    ["pretransfer_time"]=> 
    float(0.13615) 
    ["size_upload"]=> 
    float(0) 
    ["size_download"]=> 
    float(0) 
    ["speed_download"]=> 
    float(0) 
    ["speed_upload"]=> 
    float(0) 
    ["download_content_length"]=> 
    float(965985) 
    ["upload_content_length"]=> 
    float(0) 
    ["starttransfer_time"]=> 
    float(1.578002) 
    ["redirect_time"]=> 
    float(0) 
    ["certinfo"]=> 
    array(0) { 
    } 
    ["primary_ip"]=> 
    string(11) "79.125.4.68" 
    ["primary_port"]=> 
    int(443) 
    ["local_ip"]=> 
    string(11) "192.168.0.9" 
    ["local_port"]=> 
    int(53950) 
    ["redirect_url"]=> 
    string(0) "" 
} 

Так как могу ли я получить собственно заголовок?

+0

'curl_getinfo' - это не то же самое, что и запрос HEAD. См. Http://stackoverflow.com/questions/1378915/header-only-retrieval-in-php-via-curl – Joe

+0

@Joe Спасибо за ссылку на это, но большая часть кода не имеет значения. У меня возникают проблемы с выбором через это. Все, что я хочу, это имя файла из заголовка. Не могли бы вы, если возможно, сказать мне код, который мне нужен? Благодаря! –

+0

Да: не используйте 'curl_getinfo'. Это не возвращает информацию из вызова и получает заголовки от звонка. Вам нужно на самом деле вызвать curl, выдающий запрос 'HEAD', и получить эти заголовки. – Joe

ответ

0

Причина, по которой это произошло, заключается в том, что я отбрасывал ввод curl_exec. Я изменил эту часть кода на:

$headers=curl_exec($info); 
+0

Сделайте это приемлемым ответом, если он решает вашу проблему. – Shashank

+0

@shihon Unfortunatley Мне не хватает репутации, чтобы немедленно сделать это и ждать 2 дня. –

Смежные вопросы