J'aimerais savoir comment je peux faire à partir d'un site hebergé en local pour connaitre la taille d'un fichier qui se trouve sur un serveur web distant sans passer par du FTP?
Merci pour votre aide
Manuscle
<?php
function filesize_remote($url, $timeout=2)
{
$url = parse_url($url);
if ($fp = @fsockopen($url['host'], ($url['port'] ? $url['port'] : 80), $errno, $errstr, $timeout))
{
fwrite($fp, 'HEAD '.$url['path'].$url['query']." HTTP/1.0\r\nHost: ".$url['host']."\r\n\r\n");
stream_set_timeout($fp, $timeout);
while (!feof($fp))
{
$size = fgets($fp, 4096);
if (stristr($size, 'Content-Length') !== false) // PHP5: stripos
{
$size = trim(substr($size, 16));
break;
}
}
fclose ($fp);
}
return is_numeric($size) ? intval($size) : false;
}
echo filesize_remote("URL_DU_FICHIER",0);
?>
sinon, a partir de php 5.x filesize("URL_DU_FICHIER") doit fonctionner !!! <- a vérifierglobal $size_unit;
if ($size >= 1073741824)
{$size = round($size / 1073741824 * 100) / 100 . " Go";}
elseif ($size >= 1048576)
{$size = round($size / 1048576 * 100) / 100 . " Mo";}
elseif ($size >= 1024)
{$size = round($size / 1024 * 100) / 100 . " Ko";}
else
{$size = $size . " o";}
if($size==0) {$size="-";}
return $size;
Ah ok! Je m'en doutais mais je n'étais pas sûr!C'est normal c'est en octet :
1ko = 1024 octets
donc
51,2ko = 52428,8 octets (soit 52ko en arrondi)
Mais c'est pas grave, t'es nul mais tu te soignes (cf. ta signature au cas où quelqu'un croirait que je te prends de haut)Ah ok! Je m'en doutais mais je n'étais pas sûr!
Merci!
$chemin = "fichier.zip";
$valide = @fopen($chemin, 'r');
Après à toi de mettre ta condition : si $valide est rempli, le fichier existe sinon il existe pas function filesize_remote($url, $timeout=2) {
$valide = @fopen($url,'r');
if (!$valide) {
return "<span class=\"ko\">ATTENTION! Le fichier ne semble pas être présent!</span>";
} else {"reste de la fonction"}
}
Merci!