2009-12-14 2 views
0

Я пытаюсь получить размер файла удаленного файла «compiler-latest.zip» (googlecode.com) с помощью Curl фактически не загружая его, вот мой PHP код:Как получить размер файла удаленного файла из googlecode с помощью cURL?

$url = 'http://closure-compiler.googlecode.com/files/compiler-latest.zip'; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_NOBODY, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // optional 
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); // optional 
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // optional 
$result = curl_exec($ch); 
$filesize = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); 
curl_close($ch); 
print 'Filesize: ' . $filesize . '<br><br>'; 
print_r($result); 

Но, я получаю " HTTP/1.1 404 Not Found "с размером файла (1379 байт) этой ошибки 404. Итак, если я установил (CURLOPT_NOBODY, 0), он загружает файл и возвращает его правильный размер файла (в настоящее время 3820320 байт). Мой вопрос в том, как получить правильный размер файла «compiler-latest.zip» без его загрузки?

ВАЖНО: этот код работает так, как ожидается, с любым другим URL-адресом за пределами googlecode.com.

+2

У вас есть метод HEAD, чтобы узнать, возвращается ли что-нибудь полезное в headerS? – jldupont

+0

Да, я беру HEADER, он обычно содержит все необходимые данные, но не в этом конкретном случае. – Ken

ответ

2

Использование get_headers функции:

<?php 

$headers = get_headers('http://closure-compiler.googlecode.com/files/compiler-latest.zip'); 

$content_length = -1; 

foreach ($headers as $h) 
{ 
    preg_match('/Content-Length: (\d+)/', $h, $m); 
    if (isset($m[1])) 
    { 
     $content_length = (int)$m[1]; 
     break; 
    } 
} 

echo $content_length; 
+0

Спасибо, мой скрипт уже использует эту функцию, более простой способ: $ data = get_headers ($ url, 1); echo $ data ['Content-Length']; Мне просто интересно, как это можно сделать с помощью CURL, вот и все. – Ken

1

И как получить размер файла, когда содержание длины не хватает?

+0

См. Здесь: http://stackoverflow.com/questions/3894653/how-to-get-the-file-size-of-a-remotely-stored-image-php/3894706%25233894706 –

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