2010-10-08 4 views
3

Disons que nous avons un fichier image, stocké dans un serveur distant (par exemple, prenons this image), comment pouvons-nous déterminer (en code PHP) c'est la taille du fichier?Comment obtenir la taille de fichier d'une image stockée à distance? (php)

Si le fichier était sur le serveur, nous aurions utilisé la taille de fichier (see here), mais cela ne fonctionnerait pas sur un fichier distant (see here).

L'autre alternative est de vérifier la « Content-Length », mais je crois qu'il ne fonctionnerait pas pour un fichier image (see here)

Je voudrais une solution comme celle donnée here (par exemple , quelque chose comme:.

<?php 
function get_remote_size($url) { // magic 
} 
echo get_remote_size("http://humus101.com/wp-content/uploads/2009/11/Hummus-soup.jpg"); 
?> 

Mais sans qu'il soit nécessaire de télécharger l'image est-ce possible

Répondre

8

En supposant que vous vous inquiétiez de la taille du fichier (pas des dimensions de l'image), vous pouvez saisir Content-Length et cela fonctionnera généralement.

Si le serveur à l'autre extrémité ne fournit pas l'en-tête, vous n'aurez pas d'autre choix que de récupérer le fichier et de vérifier sa taille localement.

<?PHP 
$headers = get_headers('http://humus101.com/wp-content/uploads/2009/11/Hummus-soup.jpg'); 
$size = null; 
foreach($headers as $h){ 
    /** look for Content-Length, and stick it in $size **/ 
} 
if ($size === null){ //we didn't get a Content-Length header 
    /** Grab file to local disk and use filesize() to set $size **/ 
} 

echo "image is $size bytes"; 
+0

J'utilisais [getimagesize] (http://php.net/manual/en/function.getimagesize.php), mais il était en train de télécharger le fichier entier avant d'obtenir la taille de l'image. Merci pour celui-ci. – machineaddict

0

quelqu'un d'autre fonction de ce qu'il fait essentiellement comme une connexion socket: http://snippets.dzone.com/posts/show/1207

+0

Merci. Quel est l'avantage d'être une connexion socket? –

+0

Cela lui permet de faire une requête HEAD sur PHP4 qui n'a pas 'get_headers'. Je ne l'utiliserais pas aujourd'hui. – bobince

+0

Il serait, mais son téléchargement de l'ensemble du fichier. – machineaddict

1

echo get_headers ($ url, 1) ['Content-Length'];

Questions connexes