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

Servlets/JSP Java Discussion :

Forcer le telechargement


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Par défaut Forcer le telechargement
    Bonjour à tous,

    Après avoir parcourus les forums, j'ai trouvé quelques indices qui m'ont permis de forcer le telechargement des fichiers dont le type MIME est connu.

    Le problème, c'est que c'est vraiment moche et certains fichiers ne fonctionnent pas (xls->OK mais pdf->non). Voici les lignes intéressantes:





    Auriez vous une idée, comment faire plus propre que cette méthode pour avoir le meme résultat??
    PS: je ne peux pas utiliser de Servlet, que des pages JSP (contrainte prédéfinie et non négociable).

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Par défaut
    Le code:



    //Je récupère l'adresse du fichier à telecharger, contenu dans la variable ficAccueilPdf. ficAccueilPdf sous la forme:
    "http://truc/bidule/monfichier.pdf"

    URL adressePdf = new URL(ficAccueilPdf);
    InputStream is = adressePdf.openStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    StringBuffer sb = new StringBuffer();
    String ligne;

    //Je lis le PDF en entier et je le recopie dans la page web avec la ligne 39

    while ((ligne = br.readLine()) != null) {
    sb.append(ligne);
    }

    //Cette ligne fait que le navigateur va telecharger ma page web "telechargement.jsp"
    //Il se trouve que cette page web contient uniquement et totalement mon fichier pdf

    response.setHeader("Content-Disposition", "attachment; filename=restit.pdf" );
    out.flush();
    out.print(sb.toString());

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Comme une page JSP est une servlet, il n'y a pas de problème, tu peux mettre ce code (à adapter) dans la page entre <% 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
     
    File file = new File(...LeFichierSource...);
     
    response.setContentType("unknown/unknown");
    response.setHeader("Content-Disposition", "attachment; filename=\"MonFichier\"");
     
    InputStream in = new FileInputStream(file);
    ServletOutputStream out = response.getOutputStream();
    try
    {
       int bit = in.read();
       while( (bit) >= 0 )
       {
          out.write(bit);
          bit = in.read();
       }
    }
    catch (Throwable t)
    {
       System.out.println("Erreur : " + t.getMessage());
    }
    out.flush();
    out.close();
    in.close();
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Par défaut
    Merci, je vais essayer de suite


    Une question:

    a quoi sert la ligne
    response.setContentType("unknown/unknown"); ???

    Je sais que c'est pour spécifier le type MIME, mais que fait il avec ce type spécifié???

    Parce que la ligne suivante:
    response.setHeader("Content-Disposition", "attachment; filename=\"MonFichier\"");
    Va s'appliquer à tout, le navigateur me fait meme télécharger le fichier jsp quand je l'utilise. Pourtant, je précise application/msexcel ou application/pdf

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    setContentType("unknown/unknown") -> on ne se pose pas de question
    Voilà ce qui arrive coté client pour un type xml (voir image)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Par défaut
    Chwaite, sa marche, merci beaucoup!!

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

Discussions similaires

  1. forcer le telechargement avec la bonne Extetion!
    Par zelig dans le forum Langage
    Réponses: 1
    Dernier message: 23/07/2006, 14h37
  2. Réponses: 3
    Dernier message: 10/04/2006, 16h09
  3. forcer le telechargement d'un executable
    Par dev-man dans le forum Général Conception Web
    Réponses: 8
    Dernier message: 14/03/2006, 18h09
  4. Réponses: 16
    Dernier message: 16/11/2005, 16h51
  5. [Sécurité] Forcer le téléchargement
    Par MYster dans le forum Langage
    Réponses: 9
    Dernier message: 14/11/2005, 19h40

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