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 :

ce warning est incompréhensible


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 508
    Billets dans le blog
    1
    Par défaut ce warning est incompréhensible
    Bonjour,

    je tente de forcer un téléchargement de fichier, mais ça se traduit par un warning incompréhensible.
    Le code appelé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ($handle = opendir('../sauvegarder/essai')) {			
     
        while (false !== ($file = readdir($handle))) 
           if (($file!='.')&&($file!='..')) {
               echo '<a href="telecharger_vieilles.php?nom_file='.$file.'">'.$file."</a><br>";
     }}
    telecharger_vieilles.php :
    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
    25
    26
    <?php 
    $nom_file=$_GET['nom_file'];
    // code pour forcer un téléchargement
    $full_path = "essai/".$nom_file;
    $full_path="http://villarddelanspatinage.fr/maj/sauvegarder/".$full_path;
    $file_name=$full_path;
     
    ini_set('zlib.output_compression', 0);
    $date = gmdate(DATE_RFC1123);
     
    header('Pragma: public');
    header('Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0');
     
    header('Content-Tranfer-Encoding: none');
    header('Content-Length: '.filesize($full_path));
    header('Content-MD5: '.base64_encode(md5_file($full_path)));
    header('Content-Type: application/octetstream; name="'.$file_name.'"');
    header('Content-Disposition: attachment; filename="'.$file_name.'"');
     
    header('Date: '.$date);
    header('Expires: '.gmdate(DATE_RFC1123, time()+1));
    header('Last-Modified: '.gmdate(DATE_RFC1123, filemtime($full_path)));
     
    readfile($full_path);
    exit; // nécessaire pour être certain de ne pas envoyer de fichier corrompu
    ?>
    Le premier warning (il y en a une cascade) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: filesize() [function.filesize]: Stat failed for http://villarddelanspatinage.fr/maj/sauvegarder/essai/cadre72.gif (errno=2 - No such file or directory) in /homez.309/villardd/www/maj/vieillessauvegar/telecharger_vieilles.php on line 15
    (Alors que ce fichier existe)

    A votre avis, qu'est-ce qui cloche ?

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    tu peux pas faire un filesize sur une URL, ca marche qu'avec les fichiers locaux
    si tu veux recuperer la taille regarde du coté de get_headers

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 508
    Billets dans le blog
    1
    Par défaut
    Comme il s'agit d'un fichier local, j'ai tenté ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $local_file="../sauvegarder/essai/".$nom_file;
    ...
    header('Content-Length: '.filesize($local_file));
    Il n'y a plus de warning, mais au lieu de télécharger le fichier, il me propose de télécharger "telecharger_vieilles.php"...

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 115
    Par défaut
    Le problème vient sans doute de ce que tu as mis dans

  5. #5
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Pourquoi ne pas appliquer l'une des deux méthodes présentées
    ici pour $full_path ?

    Edit : Ce n'est pas 'application/octetstream' mais application/octet-stream.

  6. #6
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 508
    Billets dans le blog
    1
    Par défaut
    Pourquoi ne pas appliquer l'une des deux méthodes présentées
    ici pour $full_path ?
    car je n'y avais pas pensé...Du coup, j'ai laissé tomber le $local_file et suis revenu en arrière. De plus, il y a un truc que je ne comprends pas : si à telecharger_vieilles.php, je passe juste $file :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="telecharger_vieilles(archives !!).php?nom_file='.$file.'">'.$file."</a><br>";
    , ça ne marche pas, alors que si je lui passe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ch="../sauvegarder/essai/".$file;
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="telecharger_vieilles.php?nom_file='.$ch.'">'.$file."</a><br>";
    ça marche (tu comprends pourquoi ? Car passer seulement $file me paraîtrait plus logique).

    Ce n'est pas 'application/octetstream' mais application/octet-stream
    OK le puriste, mais même sans le tiret, ça marche.

    Et sinon, merci pour ta réponse, car je n'aurais pas trouvé sinon.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/06/2008, 14h09
  2. [WARNING] message incompréhensible.
    Par storm_2000 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 24/11/2006, 17h54
  3. Réponses: 16
    Dernier message: 29/05/2006, 17h52

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