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 :

download de fichiers


Sujet :

Web Perl

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Par défaut download de fichiers
    Bonjour,

    j'aimerai connaitre le code, si possible en utilisant le module cgi, pour télécharger un fichier du serveur vers le client.

    Pour le moment, j'ai une interface html qui permet à l'utilisateur d'entrer un fichier. Puis un script cgi-perl pour enregistrer ce fichier sur le serveur et faire tout un tas de traitements sur ce fichier.
    J'aimerai maintenant que l'utilisateur puisse récupérer le fichier une fois transformé via la fenetre html de résultats générée par le script cgi , sinon, tous ca ne sert pas à grand chose.

    merci beaucoup de votre aide, car j'ai beau cherché sur internet et testé tous un tas de chose rien ne marche. La plupart des gens font du php ...

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    tu n'as pas assez chercher il me semble.

    http://search.cpan.org/search?query=download&mode=all

  3. #3
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Soit le fichier est généré lors du téléchargement et dans ce cas, il s'agit simplement d'utiliser un bon header (Content: text/html n'est pas le seul header HTTP disponible !) puis d'écrire les données sur STDOUT (en n'oubliant pas de le passer en binaire s'il s'agit d'un fichier binaire), soit le fichier est statique et dans ce cas il suffit de générer un lien vers le fichier (tu sais, le tag <a> ?)

    --
    Jedaï

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Par défaut
    Il s'agit effectivement d'un fichier statique. J'ai donc tenter d'utiliser la balise <a> comme tu me le conseil, mais malheureusement pour le moment ca ne marche pas.

    mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print "<a href=$chemin> lien </a>
    et $chemin contient le chemin relatif par rapport au dossier cgi-bin jusqu'au fichier que je veux

    j'ai donc bien sur ma page html de résultat le mot lien en bleu souligné comme il faut, mais quand je clic dessus, il me dit 404 Not Foud: The requested URL /usr/local/developpement/liste1.txt was not found on this server.

    pourtant, le chemin est correct...

    Sinon, autre question. Quand se lien marchera (j'espere en tout cas) il me permettra d'ouvrir le fichier c'est ca? y a t'il moyen qu'en cliquant sur le lien, le fichier s'enregistre ou le veux l'utilisateur?

    merci beaucoup

  5. #5
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par solen Voir le message
    et $chemin contient le chemin relatif par rapport au dossier cgi-bin jusqu'au fichier que je veux

    j'ai donc bien sur ma page html de résultat le mot lien en bleu souligné comme il faut, mais quand je clic dessus, il me dit 404 Not Foud: The requested URL /usr/local/developpement/liste1.txt was not found on this server.

    pourtant, le chemin est correct...
    J'ai comme un doute... (par ailleurs rajoute moi des doubles quotes "" autour de ce chemin, c'est dans la norme du XHTML, ou alors utilise carrément le module CGI, il est fait pour ça après tout).

    Sinon, autre question. Quand se lien marchera (j'espere en tout cas) il me permettra d'ouvrir le fichier c'est ca? y a t'il moyen qu'en cliquant sur le lien, le fichier s'enregistre ou le veux l'utilisateur?
    Ca dépend du type de fichier et de la configuration de ton serveur, au pire l'utilisateur peut cliquer droit et sélectionner "Enregistrer sous...".

    --
    Jedaï

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Par défaut
    Il n'y a pas de doute à avoir je suis certaine du chemin.

    Par contre, le serveur est sous linux, et j'ouvre l'interface web depuis windows, je ne sais pas si ca peux avoir des consequences.
    De plus, l'interface web est dans le dossier /var/www/moi/interface.html et le fichier que je veux ouvrir est au chemin /usr/local/developpement/liste1.txt

    Mais en même temps, /usr/local/developpement/liste1.txt ce n'est pas une URL si? ca ne dérange pas?

    pour sauvegarder en faisant clic droit, j'y avait effectivement penser. Ca fera très bien l'affaire si jamais j'y arrive!!

    merci de ta participation active en tous cas

  7. #7
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Tu confonds deux choses différentes : la hiérarchie des répertoires vu depuis le serveur (la machine, l'OS, nommons la hiérarchie "réelle") et la hiérarchie des répertoires visibles par le client HTTP (appelons la "virtuelle")... La seconde n'est qu'un sous-ensemble de la première et selon les options du serveur HTTP, elle peut diverger largement de la hiérarchie réelle sous-jacente !
    Tu ne peux pas faire un lien vers un fichier qui est dans un dossier invisible aux clients, et si /usr/local/developpement fait partie des dossiers réels accessible depuis un client HTTP, tu as une configuration de serveur exécrable !

    En d'autres termes, mets ces fichiers dans un emplacement accessible depuis un client HTTP (mets le quelque part dans la hiérarchie virtuelle).

    --
    Jedaï

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Par défaut
    Je veux bien te croire quand tu me dit que je confonds, car je n'arrive pas vraiment à comprendre qui fait quoi, ni qui a le droit de faire quoi entre apache, moi, et le client qui se connecte via l'interface html et les différents répertoires du serveurs.

    Pour que tu comprenne bien, je fais un récapitulatif:

    - apache lance mon interface graphique qui se trouve dans: /var/www/html/moi
    - le bouton valider de mon interface graphique lance le script cgi-perl qui se trouve dans /var/www/cgi-bin
    - le script cgi-perl lance des modules perl qui se trouve dans /usr/local/developpement/moi. Les fichiers qui sont succecivement créés par mes modules ce trouvent donc a cet endroit. Et quand je regarde les droits, ils apartiennent à apache. Ce qui veut dire pour moi qu'apache à bien le droit d'acceder a ce dossier, et d'y ecrire des choses.

    Maintenant, n'étant pas sur que ce dossier (moi) soit accessible depuis un client HTTP (je ne sais pas très bien ce que sa veut dire), j'ai essayer de copier le fichier à d'autres endroits pour voir.
    Si je le copie dans /var/www/html/moi/ ca me fais la meme erreur que precedement.
    Si je le copie dans var/www/cgi-bin/ ca me fais pareil

    Ou faudrait-il que je les copie pour que ca marche???

  9. #9
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Si tu les copies dans /var/www/html/ (en tout cas dans la racine de ton site web) et que tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print '<a href="/tonfichier.txt" >lien</a>';
    Est-ce que ça marche ? (N'oublie pas de mettre les droits en lecture pour tout le monde)

    --
    Jedaï

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Par défaut

    effectivement, ca marche

    Par contre, ca ne m'arrange pas trop de mettre ca en vrac dans /var/www/html/ car c'est un repertoire qui est utiliser par pas mal de monde et si tous le monde fais ca, ca va vite devenir le bazar. Mais je sans que je suis sur la bonne voix. je vais essayer de voir les droits qui peuvent poser problème en créant un sous dossier moi dans html

    Merci beaucoup

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Par défaut
    Bonjour,

    alors, effectivement, ca marche en mettant le fichier directement dans /var/www/html, et même en le mettant dans un sous dossier dans html.

    Mais j'aimerai quand même en comprendre la raison, car ça ne me satisfait pas totalement. Si j'ai bien compris, il faut être dans un répertoire où apache à le droit d'aller. Or, le fichier que je veux afficher par l'intermédiaire de mon lien est créé par apache dans mon repertoire (au chemin /usr/local/developpement/moi/).

    Pourquoi apache est capable d'écrire dans ce dossier, et qu'il n'est pas capable de faire un lien vers ce dossier???

    Merci par avance d'éclairer ma lanterne

  12. #12
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par solen Voir le message
    Mais j'aimerai quand même en comprendre la raison, car ça ne me satisfait pas totalement. Si j'ai bien compris, il faut être dans un répertoire où apache à le droit d'aller.
    Non... Ce n'est pas une question de droits pour l'utilisateur apache, c'est une question de hiérarchie virtuelle visible par le client et de sa correspondance avec la hiérarchie réelle sur le serveur. De base, le client ne voie que les dossiers qui se trouvent sous la "racine du site", la racine du site (http://www.monsite.com/) étant mis en correspondance avec un dossier réel sur le serveur, dans ton cas "/var/www/html". Il est ensuite possible de configurer Apache pour rendre certains autres dossiers réels accessible au client, comme ton répertoire "/var/www/cgi-bin" qui est accessible sous l'alias /cgi-bin pour le client.

    Il serait éventuellement possible de configurer Apache pour rendre accessible ton répertoire /usr/local/developpement/ mais il est plus simple de mettre les fichiers dans un emplacement visible par les clients.

    --
    Jedaï

Discussions similaires

  1. Réponses: 13
    Dernier message: 21/12/2005, 13h04
  2. download de fichier depuis un serveur web
    Par minusette dans le forum Modules
    Réponses: 9
    Dernier message: 14/10/2005, 10h10
  3. [Javabean/sun.net.ftp] Downloader un fichier txt
    Par benben13 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 13/09/2005, 17h43
  4. [C#] Download de fichier
    Par Scorff dans le forum ASP.NET
    Réponses: 2
    Dernier message: 27/06/2005, 11h09
  5. [VB.NET] Download de fichiers sur un serveur...
    Par Webman dans le forum ASP.NET
    Réponses: 3
    Dernier message: 19/05/2004, 11h25

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