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

Java EE Discussion :

Problème lors d'un download (côté serveur ?)


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut Problème lors d'un download (côté serveur ?)
    Bonjour,

    dans mon projet, je créé un zip et je propose ensuite de le download. donc dans ma calsse action il y a ça :

    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
     
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response) {
     
    		response.setContentType("application/octet-stream");
    		response.setHeader("Content-Disposition",
    				"attachment;filename=rapport.zip");
     
    			URL url = getServlet().getServletContext().getResource(
    					"rapport.zip");
    			InputStream in = url.openStream();
     
    			ServletOutputStream sot = response.getOutputStream();
    			byte[] outputByte = new byte[4096];
     
    			while (in.read(outputByte, 0, 4096) != -1) {
    				sot.write(outputByte, 0, 4096);
    			}
    			in.close();
    			sot.flush();
    			sot.close();
     
    		} catch (Exception e) {
    			e.printStackTrace();
    		}


    le problème viens du faite que quand je suis sur eclipse ça marche parfaitement (tout mes fichier son dansm on .zip je peux le telecharger et tout extraire)
    sauf que quand je déploie l'appli sur un serveur (via un .war) le download s'effectue mais le fichier a une taille de 0 octet, et je peux pas l'ouvrir...

    Quelqu'un aurais une explication et/ou une solution ?


    merci d'avance
    Kadash

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Citation Envoyé par Kadash Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ServletOutputStream sot = response.getOutputStream();
    byte[] outputByte = new byte[4096];
     
    int n;
    while ((n = in.read(outputByte, 0, 4096)) >= 0) {
      sot.write(outputByte, 0, n);
    }
    1. Lis bien la documentation de la méthode read
    2. Revois la gestion de tes flux avec des blocs try-finally
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    la méthode read renvoie le nombre d'octets lus. Ce nombre peut être inférieur à la taille du buffer.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  4. #4
    Membre actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 74
    Par défaut exemple...
    Voici comment à mon avis tu devrais gerer la chose. Par contre, verifie bien que la resource rapport.zip existe bien.
    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
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response) {
    		response.setContentType("application/octet-stream");
    		response.setHeader("Content-Disposition",
    				"attachment;filename=rapport.zip");
    		InputStream in = null;
    		OutputStream out = null;
     		try {
    			URL url = getServlet().getServletContext().getResource(
    					"rapport.zip");
    			if(url==null) throw new Exception("rapport.zip not found"); 
    			in = url.openStream();
    			out = response.getOutputStream();
    			byte[] outputByte = new byte[4096];
    			for(int n = 0;
    				(n = in.read(outputByte, 0, 4096)) >0;
    				out.write(outputByte, 0, n));
    			out.flush();
    		} catch (Exception e) {
    			logger.error(e.getMessage(), e);
    		} finally {
    			try {if(in!=null) in.close();} catch(Exception ex) {}
    			try {if(out!=null) out.close();} catch(Exception ex) {}
    		}

Discussions similaires

  1. SQL SERVER: probléme lors de la connexion au serveur
    Par sorown dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 09/05/2014, 11h40
  2. [Débutant] Problème lors de la communication client/serveur
    Par zetsu00 dans le forum Services Web
    Réponses: 4
    Dernier message: 26/07/2012, 11h56
  3. Réponses: 1
    Dernier message: 17/02/2011, 23h21
  4. [OL-2007] "Problème lors de la connexion au serveur"
    Par cidhighwind dans le forum Outlook
    Réponses: 0
    Dernier message: 08/03/2010, 21h46
  5. [AJAX] Mise sur serveur
    Par mms_1983 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/07/2007, 21h15

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