IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Erreur PHP sur une fonction qui récupère la taille d'un fichier


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Erreur PHP sur une fonction qui récupère la taille d'un fichier
    Bonjour à tous,

    j'ai une page qui affiche des documents à télécharger et je récupère la taille du fichier ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function tailleFichier($fichier){
    			$extension=substr($fichier,-3);
    			if($extension<>'html' and $extension<>'htm'){
    				$stat = stat($fichier);
    				//Taille du fichier
    				$size=number_format($stat['size']/1024,2);
    			}else{
    				$size=0;
    			}
    			return $size;
    Seulement lorsque le fichier est juste un lien vers une page web avec une extension autre que .html ou .htm, j'ai l'erreur suivante qui s'affiche :

    Warning: stat() [function.stat]: stat failed for http://www.site du lien/ in /home/hosted/usersSpace/380/ftp/monsite.com/www/fonctions.php on line 1052

    J'ai essayé d'ajouter et mais ca ne fonctionne pas....
    Merci d'avance pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Cherches pas trop, car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $extension=substr($fichier,-3);
    avec .html renvoie tml

    A++
    Christele
    Dernière modification par rawsrc ; 08/12/2012 à 15h27. Motif: Balises [code][/code] - Bouton # de l'éditeur !!

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse, mais je ne suis pas sur d'avoir bien compris, il faut que j'indique ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($extension<>'tml' and $extension<>'htm')
    ?

    la ligne en erreur est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $stat = stat($fichier);

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    voici une meilleure façon de récupérer l'extension d'un fichier (pour peu que le lien soit vraiment celui d'un fichier !) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	// extension du fichier (en minuscule)
    	$extension = strtolower(pathinfo($fichier, PATHINFO_EXTENSION));
    Je ne suis pas sûr qu'on puisse récupérer des infos (via stat()) sur un fichier externe à ton propre serveur.
    Voir ici : Accès aux URLs HTTP(s)
    Support de la fonction stat() Non
    Cela dit, c'est possible en interne : avec un lien relatif.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function tailleFichier($fichier){
    			// $extension = strtolower(pathinfo($fichier, PATHINFO_EXTENSION)); // (inutile, ici)
    			if(@stat($fichier)){ // (@ : pour éviter l'affichage de l'alerte de type E_WARNING en cas d'erreur)
    				$stat = stat($fichier);
    				//Taille du fichier
    				$size = number_format($stat['size']/1024,2);
    			} else {
    				$size = 0;
    			}
    			return $size;
    };
    Dernière modification par Invité ; 08/12/2012 à 16h33.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci beaucoup pour ta réponse, j'utilise la deuxième solution et ca fonctionne très bien.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Trouvé sur le web (pour affichage du résultat) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    //Affiche la taille d'un fichier en php
    function taille_fichier($fichier)
    {
    	$taille_fichier = filesize($fichier);
     
    	if ($taille_fichier >= 1073741824) 
    	{
    		$taille_fichier = round($taille_fichier / 1073741824 * 100) / 100 . " Go";
    	}
    	elseif ($taille_fichier >= 1048576) 
    	{
    		$taille_fichier = round($taille_fichier / 1048576 * 100) / 100 . " Mo";
    	}
    	elseif ($taille_fichier >= 1024) 
    	{
    		$taille_fichier = round($taille_fichier / 1024 * 100) / 100 . " Ko";
    	}
    	else 
    	{
    		$taille_fichier = $taille_fichier . " o";
    	} 
    	return taille_fichier;
    }
    ?>

Discussions similaires

  1. Réponses: 11
    Dernier message: 05/02/2008, 13h10
  2. Réponses: 3
    Dernier message: 29/01/2008, 12h04
  3. Erreur aléatoire sur une fonction
    Par defluc dans le forum Firebird
    Réponses: 8
    Dernier message: 10/09/2007, 16h34
  4. erreur syntaxe sur une fonction pow
    Par superyoury dans le forum C
    Réponses: 3
    Dernier message: 10/06/2007, 18h16
  5. [MySQL] Créer une fonction qui récupère un enregistrement
    Par azahord dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 10/11/2006, 20h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo