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 :

afficher des fichiers sous forme de lien


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut afficher des fichiers sous forme de lien
    Salut a tous !!
    J'ai pu recuperer des fichiers du repertoire "C:\willy"
    dans mon disque dur serveur et je parviens
    a les afficher sur l'interface client,j'utilise le code:

    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
     
       $dir='C:\willy';
     
       if(@is_dir($dir)){// On vérifit que le dossier existe
     
        $dh = opendir($dir);// On ouvre le repertoire    
     
        while(($file = readdir($dh)) !== false){// Boucle pour parcourir le repertoire
     
    	   echo 'Fichier : ',$file,'<br />';
     
        }
        closedir($dh);// On ferme le repertoire
     
        unset($nomFich,$dir,$dh);// On supprime les variables qui servent à rien
     
    }else{
     
        echo '<p style="text-align: center;">Le dossier <strong>',$dir,'</strong>
    
     n\'existe pas.</p>';
     
    }
    ?>
    mon probleme est que je veux afficher
    ces fichiers sous forme de lien de tel sorte
    que lorsqu'on clique dessus mon script download.php
    est appele pour faire le telechargement,
    mais je ne sais vraiment pas comment m'y prendre.
    Merci pour votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    globalement ca peut ressembler à ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="download.php?section=willy&file="' . $file . '>Fichier : '.$file.,'</a><br />';
    attention a la sécurité sur ton script download.php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut afficher des fichiers sous de lien
    Salut et vraiment merci pour cette prompt reponse.
    j'ai essaye ton bout de code
    et il marche a merveille,mais le probleme
    se pose maintenant au niveau du telechargement,
    voici mon download.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
    27
     
    <?php 
     
    $dir='C:\willy\ ' .$file ;
     
    if (isset($_REQUEST["file"])) {
     
      $file=$dir.$_REQUEST["file"];
     
       	header("Content-Type: application/octet-stream");
     
     
        header("Content-Transfer-Encoding: Binary");
     
        header("Content-length: ".filesize($file));
     
        header("Content-disposition: attachment; 
    
    filename=\"".basename($file)."\"");
     
     
        readfile("$file");
     
     } else {
        echo "No file selected";
    }
     ?>
    lorsque je clique sur un lien la fenetre de telechargement s'ouvre bien, mais n'y l'icone,n'y le nom du fichier n'est affiche a l'entete.
    j'avais deja essaye ce code dans un autre contexte,il ne telechargeait
    pas les fichiers de la famille office et quand bien meme il le faisait ils etaient illisibles,idem pour les .jpeg.
    vraiment merci encore pour ton aide et j'espere que je suis explicite.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Le serpent se mord la queue la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $dir='C:\willy\ ' .$file ;
    if (isset($_REQUEST["file"])) {
    $file=$dir.$_REQUEST["file"];
    Corrigé ca peut donner :
    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
    <?php
    if (isset($_GET['file'])) {
    	$file = preg_replace('/[^0-9a-z\.\_\-]/i','',$_GET['file']);
    	$dir='c:\\';
    	$fullpath = $dir.$file;
     
    	if (is_file($fullpath)) {
    		header("Content-disposition: attachment; filename=".$file);
    		header("Content-length: ".filesize($fullpath));
    		header('Content-Type: application/octet-stream');
    		header('Content-Transfer-Encoding: binary');
    		readfile($fullpath);
    	}
    }
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut lien et ...
    salut j'ai essaye ton code
    mais lorsque je clique sur un lien => page blanche
    aucun message d'erreur,rien

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu as corrigé le chemin ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut afficher des fichiers sous de lien
    si je les fait
    au lieu de :

    j'ai plutot mis:

    mais j'obtiens une page blanche quelque
    soit le lien sur lequel je clique.
    Merci encore pour ton aide.

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu as laissé un espace a la fin
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut afficher des fichiers sous de lien
    Jusque la page blanche
    je peux te faire voir exactement
    la page que j'appelle :
    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
    <?php
    if (isset($_GET['file'])) {
    	$file = preg_replace('/[^0-9a-z\.\_\-]/i','',$_GET['file']);
    	$dir='c:\\willy\\';
    	//$dir='c:\willy\ ';
    	$fullpath = $dir.$_GET["file"];
     
    	if (is_file($fullpath)) {
    		header("Content-disposition: attachment; filename=".$file);
    		header("Content-length: ".filesize($fullpath));
    		header('Content-Type: application/octet-stream');
    		header('Content-Transfer-Encoding: binary');
    		readfile($fullpath);
    	}
    }
    ?>
    le probleme avec la ligne commentee est que lorsque je ne laisse pas d'espace,le reste du texte est grisee

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    debug comme ca :
    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
    <?php
    if (isset($_GET['file'])) {
    	$file = preg_replace('/[^0-9a-z\.\_\-]/i','',$_GET['file']);
    	$dir='c:\\willy\\';
    	$fullpath = $dir.$file;
     
    	if (is_file($fullpath)) {
    		header("Content-disposition: attachment; filename=".$file);
    		header("Content-length: ".filesize($fullpath));
    		header('Content-Type: application/octet-stream');
    		header('Content-Transfer-Encoding: binary');
    		readfile($fullpath);
    	}
           else { echo $fullpath .' n est pas un fichier'; }
    }
    else { echo 'file est vide'; }
    ?>
    le probleme avec la ligne commentee est que lorsque je ne laisse pas d'espace,le reste du texte est grisee
    C'est normal il faut mettre \\ pas \
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut afficher des fichiers sous de lien
    Voici le resultat du debbugage.
    lorsque je clique sur un fichier voici le message qui s'affiche:

    c:\willy\ n est pas un fichier

    merci enkor pour ton aide

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    étrange ça.
    essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var_dump($_GET['file']);
    if (isset($_GET['file'])) {
    	$file = preg_replace('/[^0-9a-z\.\_\-]/i','',$_GET['file']);
    var_dump($file);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut afficher des fichiers sous de lien
    Voici le message retourne:

    string(0) "" string(0) "" c:\willy\ n est pas un fichier

    peut etre j'ai mal repris le code voici ce que j'ai fait:

    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
    <?php
    //if (isset($_GET['file'])) {
    	//$file = preg_replace('/[^0-9a-z\.\_\-]/i','',$_GET['file']);
    	var_dump($_GET['file']);
    if (isset($_GET['file'])) {
    	$file = preg_replace('/[^0-9a-z\.\_\-]/i','',$_GET['file']);
    var_dump($file);
    	$dir='c:\\willy\\';
    	$fullpath = $dir.$file;
     
    	if (is_file($fullpath)) {
    		header("Content-disposition: attachment; filename=".$file);
    		header("Content-length: ".filesize($fullpath));
    		header('Content-Type: application/octet-stream');
    		header('Content-Transfer-Encoding: binary');
    		readfile($fullpath);
    	}
           else { echo $fullpath .' n est pas un fichier'; }
    }
    else { echo 'file est vide'; }
    ?>

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Non cette partie la est bonne.
    C'est dans ton lien que tu n'as rien pour file=
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut afficher des fichiers sous de lien
    la je ne suis plus, si on parviens a
    afficher les fichiers grace a la valeur
    contenu dans "file" je ne comprends pas
    comment d'une page a l'autre cette variable
    perds son contenu.
    STP t'as pas une autre solution?

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Est ce que dans le lien tu vois bien le nom du fichier ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut afficher des fichiers sous de lien
    OUI,lorsque je lance l'interface client je vois
    bien le nom du fichier sous forme de lien.
    pour plus de comprehension,voici le code source qui me permet
    de recuperer les fichiers du serveur pour le client
    en les affichant sous forme de lien :

    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
     <?php
       $dir='C:\willy';
       if(@is_dir($dir)){// On vérifit que le dossier existe
        $dh = opendir($dir);// On ouvre le repertoire
     
     
        while(($file = readdir($dh)) !== false){// Boucle pour parcourir le repertoire
    	 $x=$file;
           //echo 'Fichier : ',$file,'<br />';
    	   echo '<a href="download-doc.php?section=willy&file="' . $file . '>Fichier : '.$file.'</a><br />';
        }
        closedir($dh);// On ferme le repertoire
        unset($nomFich,$dir,$dh);// On supprime les variables qui servent à rien
    }else{
        echo '<p style="text-align: center;">Le dossier <strong>',$dir,'</strong> n\'existe pas.</p>';
    }
    ?>
    j'espere que ce code pourra nous etre utile.
    merci encore pour l'aide.

  18. #18
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Les guillemets ne vont pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="download-doc.php?section=willy&file=' . $file . '">Fichier : '.$file.'</a><br />';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  19. #19
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Par défaut afficher des fichiers sous de lien
    OK!!! cette fois ma fenetre download
    m'affiche le nom du fichier a telecharger
    et l'icone qui va avec,merci encore pour ce coup de pouce.
    toutefois tous les fichies(.doc,.xls etc...) que j'ouvre ou que je
    telecharge son illisible,les pdf ne s'ouvrent meme pas.
    je te renvoie le download.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
     
    <?php
    //if (isset($_GET['file'])) {
    	//$file = preg_replace('/[^0-9a-z\.\_\-]/i','',$_GET['file']);
    	//var_dump($_GET['file']);
    if (isset($_GET['file'])) {
    	$file = preg_replace('/[^0-9a-z\.\_\-]/i','',$_GET['file']);
    var_dump($file);
    	$dir='c:\willy\ ';
    	$fullpath = $dir.$file;
     
    	if (is_file($fullpath)) {
    		header("Content-disposition: attachment; filename=".$file);
    		header("Content-length: ".filesize($fullpath));
    		header('Content-Type: application/octet-stream');
    		header('Content-Transfer-Encoding: binary');
    		readfile($fullpath);
    	}
           else { echo $fullpath .' n est pas un fichier'; }
    }
    else { echo 'file est vide'; }
    ?>

  20. #20
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    enlève toutes les lignes header() et regarde si tu n'as pas des erreurs PHP.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Afficher des données sous forme d'un tableau.
    Par Khaoula.85 dans le forum MFC
    Réponses: 3
    Dernier message: 29/10/2009, 14h56
  2. Afficher des données sous forme de tableau
    Par poti67 dans le forum JSF
    Réponses: 10
    Dernier message: 24/09/2008, 15h35
  3. [MySQL] Afficher des résultat sous form de tableau invisible ?
    Par tentsuken dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/01/2008, 15h18
  4. afficher des données sous forme de liste
    Par yannick9 dans le forum VBA Access
    Réponses: 4
    Dernier message: 02/08/2007, 14h32
  5. jsp+afficher des données sous forme de graphes
    Par oasma dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 25/03/2007, 13h24

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