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

Web Perl Discussion :

Explorateur de fichier


Sujet :

Web Perl

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    En recherche d’emploi
    Inscrit en
    février 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : En recherche d’emploi

    Informations forums :
    Inscription : février 2014
    Messages : 62
    Points : 36
    Points
    36
    Par défaut Explorateur de fichier
    Bonjour,

    J'essaie de faire un script en perl pour parcourir les répertoires et afficher dans le navigateur

    Au chargement de la page je dois afficher le répertoire racine ensuite chaque répertoire afficher sera sous forme de lien pour pouvoir le parcourir.

    Mon problème se situe au niveau du répertoire parent, je n'arrive pas à garder en mémoire le répertoire parent.

    J'ai essayé de stocké dans un fichier mais ça me fait toujours "Erreur d'ouverture de fichier".

    J'ai donc besoin de vos conseils sur mon script:

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    #! /usr/bin/env perl
    #
    #	Explorateur de fichier 
     
    use strict;
    use warnings;
     
    print "Content-Type: text/html\n\n";
     
    my $courant;
     
    # si variable get existe alors le répertoire courant est le contenu de la varible d'environnement QUERY_STRING
    if(my $get = $ENV{"QUERY_STRING"}){
    	my @pairs = split /=/, $get;
    	$courant .= '/'.$pairs[1];
    }else{	# sinon le répertoire courant est la racine
    	$courant = "/";
    }
     
    # ouverture d'un fichier pour stocker la variable $courant
    open(FILE, ">>url_du_fichier") or die("Erreur d'ouverture de fichier");
    print FILE $courant;
    close(FILE);
     
    # ouverture du même fichier pour récupérer ce qui a été écrit
    open(FILE, "<url_du_fichier") or die("Erreur d'ouverture de fichier");
    while(<FILE>){
    	$courant = $_;	# on récupère le chemin 
    }
    close(FILE);
     
    print '<p>Repertoire Courant : '.$courant.'</p>' , "\n";
     
    opendir(my $fd, $courant) or die("Impossible d'ouvrir le répertoire");
     
    my @entrees = grep { !/^\.\.$/ } readdir($fd); 	# lecture du répertoire et filtre des .. et .
    @entrees = grep { !/^\.$/ } @entrees;			
    @entrees = sort @entrees;						# tri dans l'ordre 
     
    # lecture et affichage des liens vers les répertoires
    foreach my $v (@entrees){
    	if(-d "$courant/$v"){
    		print '<a href="/cgi-bin/explorateur.pl?fic='.$v.'">', "d $v</a><br>\n";
    	}elsif(-l "$courant/$v"){
    		print '<a href="#">' , "l $v</a><br>\n";
    	}else{
    		print '<a href="#">' , "- $v</a><br>\n";
    	}
    }
     
    closedir($fd);
    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mai 2012
    Messages : 3 612
    Points : 12 465
    Points
    12 465
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    d'une part, il n'y a aucune raison à mon avis que ne parviennes pas à mémoriser le répertoire parent dans une variable, et donc aucune raison de stocker dans un fichier pour rouvrir immédiatement ensuite le même fichier.

    A mon avis, ton problème est en amont: tu ne récupères sans doute pas des données conformes à ce que tu attends. Peux-tu imprimer la valeur de $get et le contenu de @pairs, et nous dire ce que tu obtiens.

    Je t'invite à consulter la FAQ concernant le débogage sous Perl, tu y trouveras des techniques et des trucs permettant de mieux comprendre ce qui se passe dans le déroulement d'un programme.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    En recherche d’emploi
    Inscrit en
    février 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : En recherche d’emploi

    Informations forums :
    Inscription : février 2014
    Messages : 62
    Points : 36
    Points
    36
    Par défaut
    Salut,

    Lors d'un clic sur le répertoire home par exemple
    la valeur de $get vaut fic=home et @pairs = fic home

    fic est la variable passée en paramètre dans l'url.

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mai 2012
    Messages : 3 612
    Points : 12 465
    Points
    12 465
    Billets dans le blog
    1
    Par défaut
    Donc, dans ce cas, la variable $courant prend la valeur "/home", c'est bien cela?

    Hum, ça devrait marcher en principe, mais il est probable qu'il y ait un caractère invisible (retour à la ligne) à la fin de ta variable $get. Essaie ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(my $get = $ENV{"QUERY_STRING"}){
    	chomp $get;
    	my @pairs = split /=/, $get;
    	# ...
    Jette un coup d’œil à la question suivante de la FAQ: http://perl.developpez.com/faq/perl/...e-pas-Pourquoi

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    En recherche d’emploi
    Inscrit en
    février 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : En recherche d’emploi

    Informations forums :
    Inscription : février 2014
    Messages : 62
    Points : 36
    Points
    36
    Par défaut
    ok je vais essayé d'utiliser chomp().

    Comme tu as dit pas besoin de stocker dans un fichier alors j'ai stocker dans un tableau et ça fonctionne.

    merci pour ton aide.

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

Discussions similaires

  1. Explorateur de fichier - partage de fichier
    Par Jean-Matt dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 07/11/2007, 23h23
  2. Réponses: 26
    Dernier message: 25/04/2007, 17h04
  3. [VS2005] Contrôles explorateur de fichier
    Par waici dans le forum Windows Forms
    Réponses: 5
    Dernier message: 11/01/2006, 21h23
  4. Explorateur de fichier avec limitation
    Par Shogun dans le forum Composants VCL
    Réponses: 12
    Dernier message: 30/05/2005, 17h45
  5. [C#] [Winforms] Explorateur de fichier et icônes windows
    Par Cl@rk dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/12/2004, 09h11

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