2013-06-04 4 views
4

J'utilisais ce code pour obtenir la taille de l'image en php et cela fonctionnait parfaitement pour moi.Obtenir la taille de l'image par CURL en PHP

$img = get_headers("http://ultoo.com/img_single.php", 1); 
$size = $img["Content-Length"]; 
echo $size; 

Mais comment l'obtenir via CURL? J'ai essayé cela mais ne fonctionne pas.

$url = 'http://ultoo.com/img_single.php'; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, "Content-Length"); 
//curl_setopt($ch, CURLOPT_NOBODY, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$result = curl_exec($ch); 

$filesize = $result["Content-Length"]; 

    curl_close($ch); 

    echo $filesize; 
+0

ne pas dupliquer, quand j'utilise les codes donnés sur votre lien donné, j'obtiens -1 dans le résultat. – user2424807

Répondre

0

J'ai rencontré auparavant, le script je peut être trouvé ici ->http://boolean.co.nz/blog/curl-remote-filesize/638/. Assez similaire à la poste ci-dessus, mais un peu plus simple, et beaucoup moins indulgent.

+0

Erreur d'analyse: erreur de syntaxe, '?' Inattendu, en attente ')' dans /home/dotmamat/public_html/d/dd/t1.php sur la ligne 10 – user2424807

+0

si vous avez fait un copier coller directement, assurez-vous que tous les caractères sont corrects, telles que les guillemets doubles étant de «vraies» guillemets. à part ça, je ne sais pas où un "inattendu"? viendrait de. Cette fonction a toutes ses parenthèses assorties. –

1

mis curl_setopt($ch, CURLOPT_HTTPHEADER, true);, puis print_r($result), vous verrez quelque chose comme

HTTP/1.1 200 OK 
Date: Tue, 04 Jun 2013 03:12:38 GMT 
Server: Apache/2.2.15 (Red Hat) 
X-Powered-By: PHP/5.3.3 
Set-Cookie: PHPSESSID=rtd17m2uig3liu63ftlobcf195; path=/ 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
Content-Length: 211 
Content-Type: image/png 

Je ne pense pas Content-Length est la bonne façon d'obtenir la taille d'image, parce que je reçois un résultat différent entre curl et get_header

0

Peut-être que cela fonctionne pour vous (en supposant que la page renvoie toujours un img/png) - J'ai inclus un "fichier d'écriture" juste pour pouvoir comparer la sortie d'écran vs la taille du fichier (png à partir de la page):

$url = 'http://ultoo.com/img_single.php'; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //return the output as a variable 
curl_setopt($ch, CURLOPT_TIMEOUT, 10); //time out length 
$data = curl_exec($ch); 
if (!$data) { 
    echo "<br />cURL error:<br/>\n"; 
    echo "#" . curl_errno($ch) . "<br/>\n"; 
    echo curl_error($ch) . "<br/>\n"; 
    echo "Detailed information:"; 
    var_dump(curl_getinfo($ch)); 
    die(); 
} 
curl_close($ch); 
$handle = fopen("image.png", "w"); 
fwrite($handle, $data); 
fclose($handle); 
$fileSize = strlen($data); 
echo "fileSize = $fileSize\n";