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 :

Téléchargement d'un fichier avec une Servlet sous Internet Explorer


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 143
    Points : 68
    Points
    68
    Par défaut Téléchargement d'un fichier avec une Servlet sous Internet Explorer
    Bonjour

    J'utilise le code suivant dans la méthode doPost de ma Servlet pour télécharger un fichier présent sur le serveur depuis une page.

    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
     
    response.setContentType("application/download");
    response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
     
    final File file = new File(cheminVersMonFichier);
    response.setContentLength((int) file.length());
     
    final FileInputStream fis = new FileInputStream(file);
    final OutputStream os = response.getOutputStream();
    byte[] fileContent = new byte[4096];
    int r = 0;
    while (r >= 0) {
    	r = fis.read(fileContent);
    	os.write(fileContent);
    }
    os.flush();
    os.close();
    Avec Firefox, tout se passe bien, le navigateur propose une fenêtre où l'on peut soit ouvrir le fichier avec un logiciel correspondant à l'extension du nom du fichier, soit enregistrer le fichier.

    Mais avec Internet Explorer 6, le nom du fichier télécharger s'appelle toujours "download". Du coup les utilisateurs ne peuvent pas l'ouvrir (pas d'extension) et si ils l'enregistrent, ils ont un pauvre fichier nommé simplement "download". Ils doivent ensuite ajouter l'extension à la main (par exemple .txt ou .zip) pour l'ouvrir. Cela n'est pas acceptable.

    Comment faire pour avoir le bon comportement sur Internet Explorer ? Je pensais que le Header avec attachment;filename=... servait à spécifier le nom du fichier téléchargé...

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    J'utilise ceci :

    res.setContentType("application/x-download");
    res.setHeader("Content-Disposition", "attachment; filename=" + filename);
    Le content type doit surtout pas être reconnu par le navigateur...

    Sinon
    Tu pourrais aussi décorer ton FileInputStream d'un bufferedInputStream, fermer ce dernier correctement, et laisser l'outputStream de la reponse ouvert.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 143
    Points : 68
    Points
    68
    Par défaut
    Il est vrai que j'avais oublié de fermer le FileInputStream. Merci pour ta remarque. C'est chose faite maintenant. D'autre part je ferme le flux de la réponse car il n'y a plus rien à ajouter à la réponse après l'exécution de ce code.

    Sinon, qu'entends tu par décorer mon FileInputStream par un BufferedInputStream ? Et quel en est l'intérêt ?

    Merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 143
    Points : 68
    Points
    68
    Par défaut
    Bon désolé. En fait ça marche. C'est parce que le nom de mon fichier avait un slash. Firefox arrive à passer outre mais pas IE. En gérant le slash en amont dans mon code, ça roule.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/06/2015, 09h04
  2. Impression d'une page avec des graphiques sous Internet explorer 8
    Par donnang dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/10/2013, 20h37
  3. trouver une erreur sous Internet Explorer
    Par mrsoyer dans le forum Outils
    Réponses: 1
    Dernier message: 20/05/2008, 15h33
  4. Traiter 100 fichiers avec une boucle sous VBA excel
    Par sebastien06 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/04/2008, 09h39
  5. pb avec movie flash sous internet explorer
    Par glebourg dans le forum Flash
    Réponses: 7
    Dernier message: 15/12/2006, 10h06

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