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

JSF Java Discussion :

Envoyer un fichier a téléchargement avant de clore une pop up


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut Envoyer un fichier a téléchargement avant de clore une pop up
    Hello,

    Je cherche a envoyé un fichier à télécharger à la fin d'une action (je génère un document xml quoi doit être ouvert par Word)

    je sais déjà qu'il faut récupérer la response depuis le l'external context et de définir le content type et le header de la réponse

    mais je ne sais pas comment récupérer mon fichier précédement créer et l'envoyé au client dois je simplement ouvrir mon fichier et faire un out.println du contenu ?

    D'avance merci

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    non tu dois ouvrir ton fichier et mettre son contenu dans l'outputStram de la response,
    tu peux le faire avec les classes de java.io

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    en cherchant un peu j ai trouvé le code suivante

    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
     
    FacesContext context = FacesContext.getCurrentInstance();
    			ExternalContext ec = context.getExternalContext();
    			HttpServletResponse response = (HttpServletResponse) ec
    					.getResponse();
    			response.reset();
    			response.setContentType("application/csv");
    			response.setHeader("Content-Disposition",
    					"filename=Repartition-Agence.csv");
    			response.setHeader("Content-Transfer-Encoding", "binary");
    			ServletOutputStream sop = response.getOutputStream();
    			StringBuffer sb = rechercheLocal.getRepartitionAgenceIris();
    			sop.write("mon;fichier;csv");
    			sop.flush();
    			context.responseComplete();
    je ne vois pas ou la récupération du contenu faite de sb est renvoyé au server ...

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    J'ai finalement coder ceci

    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
     
    /**
         * Send the document to the user
         * 
         * @param filename
         *                  The file to send to the browser
         * 
         */
        private void sendPermisDeConstruire (String filename) {
        	LOG.debug("sendPermisDeConstruire " + filename + ".xml"); 
        	File file = new File("C:\\" + filename + ".xml");    	
        	FileInputStream fis = null;
            BufferedInputStream bis = null;
            DataInputStream dis = null;    	       	
        	ExternalContext external = context.getExternalContext();
        	HttpServletResponse response = (HttpServletResponse) external.getResponse();
        	//formatage de la réponse
        	response.setContentType("application/octet-stream");
        	response.setHeader ("Content-Disposition", "attachment; filename=\"PermisDeConstruire.xml\"");
        	ServletOutputStream out;
        	try {
                fis = new FileInputStream(file);
        		out = response.getOutputStream();
                bis = new BufferedInputStream(fis);
                dis = new DataInputStream(bis);
                // dis.available() returns 0 if the file does not have more lines.
                while (dis.available() != 0) {          	
                	String line = dis.readLine();
                	System.out.println(line);
                	out.write(line.getBytes());              
                }
        		out.flush();
                context.responseComplete();
        	}catch (Exception ex) {
        		LOG.error("Error while getting an outputstream from the response" + ex.getMessage());
        	}finally {
        		try {
    	    		fis.close();
    	    		bis.close();
    	    		dis.close();
        		}catch (Exception ex) {
        			LOG.error("Error while closing the file" + ex.getMessage());
        		}
        	}
     
     
        }
    le problème est que rien n'est renvoyé au client ... pas d exception la lecture du fichier se passe bien mais aucune fenêtre avec save sa n'apparait

    une piste ?

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    montre le code qui appelle cette fonction!

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    c'est appellé après la création du document xml pour word

    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
     
     /**
         * Create a permis de construire document based on a template
         */
        public void createPermisDeConstruireDocument() {
        	File file = new File("C:\\fiche_1.xml");
        	FileInputStream fis = null;
            BufferedInputStream bis = null;
            DataInputStream dis = null;    	    
        	FileOutputStream out; // declare a file output object
            PrintStream p; // declare a print stream object
            String fileName = "";
            try {
            	String commune = selectedAffaireBean.getAffaire().getCommunes().iterator().next().getLibelleFr();
            	String mimeEncoding = "8859_1";
            	fileName = selectedAffaireBean.getAffaire().getNoAffaire();
            	out = new FileOutputStream("C:\\" + fileName + ".xml");
            	OutputStreamWriter outW  = new OutputStreamWriter(out, mimeEncoding);        	
                // Connect print stream to the output stream
                p = new PrintStream( out );
                fis = new FileInputStream(file);
                // Here BufferedInputStream is added for fast reading.
                bis = new BufferedInputStream(fis);
                dis = new DataInputStream(bis);
                // dis.available() returns 0 if the file does not have more lines.
                while (dis.available() != 0) {          	
                	String line = dis.readLine();
                	line = line.replace("$commune", commune);          
                	outW.write(line);
                }
                outW.flush();            
                outW.close();
                p.close();               
            }catch (Exception ex) {
            	System.out.println("Exception : " + ex.getMessage());
            }finally {
            	try{
            	 fis.close();
            	 sendPermisDeConstruire(fileName); 
            	}catch (Exception ex) {
            		LOG.error("Error once closing file input stream");
            	}
     
            }
        }

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/03/2011, 01h52
  2. [VB.NET] [PPC] Envoyer/Recevoir fichiers PC<->PPC
    Par anthony70 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 18/08/2008, 17h05
  3. Envoyer un fichier texte sur un port IP ?
    Par jnc dans le forum Web & réseau
    Réponses: 4
    Dernier message: 19/07/2005, 11h01
  4. Quel langage pour envoyer un fichier sur une adresse
    Par dai.kaioh dans le forum Développement
    Réponses: 2
    Dernier message: 02/04/2004, 16h38
  5. Réponses: 1
    Dernier message: 19/08/2003, 16h11

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