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 :

HttpServletResponse : bouton annuler d'un enregistrement de fichier


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut HttpServletResponse : bouton annuler d'un enregistrement de fichier
    Bonjour,

    J'ai une action qui fait écrit certaines données dans un fichier Excel puis ensuite fait d'autres actions (sauf si des exceptions ont été levées pour l'écriture de ce fichier).

    Seul problème : si l'utilisateur clique sur le bouton annuler, le reste des traitements de mon action sont quand-même effectués puisque je ne sais pas intercepter le clic sur ce bouton.

    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
    File fTemp = new File(servFileName);
    response.setHeader("Content-length", "" + fTemp.length());
    response.setHeader("Content-disposition", "attachment; filename=\"" + "myFic_"  + sNow + ".xls" + "\"");
    response.setContentType("application/x-msdownload");
    response.setHeader("Pragma", "public");
    response.setHeader("Cache-control", "must-revalidate");
     
    int count;
    int countTotal = 0;
    byte buf[] = new byte[4096];
    BufferedInputStream is = new BufferedInputStream(new FileInputStream(fTemp));
    out = response.getOutputStream();
    while ((count = is.read(buf)) > -1) {
    countTotal += count;
    out.write(buf, 0, count);
    }
    if (countTotal > 0) {
    out.flush();
    out.close();
    }
    is.close();
    Merci.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    OK
    Sinon vous savez où je peux trouver la liste des content type pour changer de boîte de dialogue (je vais devoir en prendre une sans bouton annuler par exemple)...

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    La boite de dialogue apparait chez l'utilisateur APRES que le serveur aie commencé à envoyer la réponse, donc non il n'y a pas d'interception possible.

    Changer le content type ne changera rien, la boite est sous controlle exclusif du navigateur. En fait, tu lui envoie un fichier, le navigateur doit décider quoi en faire. Certains sont configuré pour afficher directement la réponse, d'autres pour demander à l'utilisateur si il veux afficher, sauvegarder ou annuler.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Changer le content type ne changera rien, la boite est sous controlle exclusif du navigateur. En fait, tu lui envoie un fichier, le navigateur doit décider quoi en faire. Certains sont configuré pour afficher directement la réponse, d'autres pour demander à l'utilisateur si il veux afficher, sauvegarder ou annuler.

    Hum, c'est pour ça que quand je change par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.setContentType("application/vnd.ms-excel");
    Ca change de fenêtre sous IE (ça m'ouvre directement le fichier) mais pas sous Firefox

    Quelle est la vraie solution universelle alors?

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    la solution universelle à quoi? Qu'est-ce que tu cherche à faire? Je t'ai dit, la boite de dialogue pour gérer les fichiers non html, tu n'y a pas accès.
    Si tu veux indiquer au browser qu'il est préférable d'afficher dans la fenetre plutot que d'ouvrir en externe, il y a le content-disposition:inline, mais ça reste une simple indication non contraignante.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Si tu veux indiquer au browser qu'il est préférable d'afficher dans la fenetre plutot que d'ouvrir en externe, il y a le content-disposition:inline, mais ça reste une simple indication non contraignante.
    J'ai essayé d'ajouter inline, pas d'effet; j'ai peut-être pas compris comment l'utiliser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.setHeader("Content-disposition:inline", "attachment; filename=\"" + "myFic_"  + sNow + ".xls" + "\"");

    Citation Envoyé par tchize_ Voir le message
    Qu'est-ce que tu cherche à faire?
    Action de sélectionner plusieurs lignes d'un tableau puis "GO"
    a)conditions incorrectes de sélection des ordre ou pb dans la création du fichier Excel --> retour vers la page avec les erreurs
    b)choix OK : fichier Excel créé et proposé à l'utilisateurs puis actions de changement de statut des lignes (et c'est ça qu'il ne faudrait pas faire si l'utilisateur a choisi de cliquer sur le bouton "Annuler" qu'on est malheureusement forcé de lui proposer).

    Note : J'aurais malgré tout bien aimé qu'on suggère (puisque j'ai comprs que le navigateur peut faire ce qui lui chante) une ouverture directe du fichier...

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

Discussions similaires

  1. [XL-2007] Masquer un bouton de commande lors de l'enregistrement du fichier Excel
    Par facteur dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/02/2014, 16h07
  2. [WD10] Les bouton de position des enregistrements du fichier dans la table
    Par bestmoroco dans le forum WinDev
    Réponses: 1
    Dernier message: 22/03/2012, 13h39
  3. bouton enregistrer/bouton annuler
    Par high_koko dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 28/12/2010, 18h28
  4. [AC-2010] bouton annulé un enregistrement
    Par idiot dans le forum IHM
    Réponses: 1
    Dernier message: 27/09/2010, 17h09
  5. [XL-2000] desactivation du bouton annulé dans "enregistrer sous"
    Par a_centaure dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/03/2010, 14h56

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