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

Struts 1 Java Discussion :

Download fichier [Débutant(e)]


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 58
    Par défaut Download fichier
    Boinjour à tous,

    Alors voila j'ai une liste de fichier et lorsque l'utilisateur clique sur le lien il doit pouvoir télécharger le fichier.
    Voici mon action :
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    public class downloadAction extends Action {
     
    	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception {
    		String resultat = "error";
     
    		String idFile = ((DownloadForm) form).getIdFileDll();
    		String idUrl = ((DownloadForm) form).getIdUrlDll();
    		String type = ((DownloadForm) form).getType();
    		Fichier fichier = new Fichier();
    		String filename = fichier.findNameFile(idFile);
    		res.setContentType("application/download");
    		res.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
     
    		ServletOutputStream out = res.getOutputStream();
    		File file = null;
    		BufferedInputStream from = null;
     
    		try {
    			String path = getServlet().getServletContext().getRealPath("");
    			path = new File(path).getParentFile().getParentFile().getParentFile().getParentFile().getParentFile().getParent();
    			path = path+File.separator+"docs"+File.separator+type+File.separator+idUrl+File.separator+filename;
    			file = new File(path);
    			res.setContentLength((int) file.length());
     
    			int bufferSize = 64 * 1024;
    			long time = System.currentTimeMillis();
     
    			try {
    				from = new BufferedInputStream(new FileInputStream(file), bufferSize * 2);
    				byte[] bufferFile = new byte[bufferSize];
    				for (int i = 0; ; i++) {
    					int len = from.read(bufferFile); 
    					if (len < 0) break; 
    						out.write(bufferFile, 0, len);
    				}
    				out.flush();
    			} finally { 
    				try { 
    					from.close();
    				} catch (Exception e) { 
    					resultat = "error";
    				} 
    				try { 
    					out.close();
    				} catch (Exception e) {
    					resultat = "error";
    				} 
    			} 
     
    			time = (System.currentTimeMillis() - time) / 1000; 
    			// seconds download 
    			double kb = (file.length() * 1.0 / 1024);
     
    			if (file != null) 
    				file.delete();
    			resultat = "succes";
    		} catch (Exception e) {
    			resultat = "error";
    		} finally { 
    			try { 
    				file.delete();
    			} catch (Exception ex) {
    				resultat = "error";
    			}
    		}
    		return mapping.findForward(resultat);
    	}
    }
    Le problème que j'ai c'est que cela fonctionne parfaitement (hé oui) mais j'ai plein de message d'erreur dans la console ce qui n'est pas super :/

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    10 avr. 2012 17:02:42 org.apache.catalina.core.ApplicationDispatcher invoke
    GRAVE: "Servlet.service()" pour la servlet jsp a lancé une exception
    java.lang.IllegalStateException: "getOutputStream()" a déjà été appelé pour cette réponse
    	at org.apache.catalina.connector.Response.getWriter(Response.java:633)
    	at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:214)
    	at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:105)
    	at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
    	at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
    	at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:182)
    	at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:123)
    	at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:80)
    	at org.apache.jsp.Error_jsp._jspService(Error_jsp.java:95)
    	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
    	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593)
    	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530)
    	at org.apache.struts.action.RequestProcessor.doInclude(RequestProcessor.java:1094)
    	at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:260)
    	at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
    	at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
    	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    	at java.lang.Thread.run(Thread.java:619)
    10 avr. 2012 17:02:42 org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: Servlet.service() for servlet [action] in context with path [/AccorWebRubis] threw exception [java.lang.IllegalStateException: "getOutputStream()" a déjà été appelé pour cette réponse] with root cause
    java.lang.IllegalStateException: "getOutputStream()" a déjà été appelé pour cette réponse
    	at org.apache.catalina.connector.Response.getWriter(Response.java:633)
    	at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:214)
    	at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:105)
    	at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
    	at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
    	at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:182)
    	at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:123)
    	at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:80)
    	at org.apache.jsp.Error_jsp._jspService(Error_jsp.java:95)
    	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
    	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593)
    	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530)
    	at org.apache.struts.action.RequestProcessor.doInclude(RequestProcessor.java:1094)
    	at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:260)
    	at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
    	at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
    	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    	at java.lang.Thread.run(Thread.java:619)
    Si vous avez des idées sur comment ne plus avoir des erreurs qui pop.
    Merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 58
    Par défaut
    Bonjour,

    Après plusieurs essaie de code et de configuration j'ai trouvé l'erreur !

    il suffisait de faire à la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    resultat = "succes";
    un
    comme ça il ne retourne rien et il y a plus le problème du double appel de la réponse.

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

Discussions similaires

  1. download fichier BD
    Par Greggggggg dans le forum Langage
    Réponses: 6
    Dernier message: 20/09/2006, 14h28
  2. Download fichier ok en local mais pas en "web"
    Par Mystic eyes dans le forum Langage
    Réponses: 5
    Dernier message: 06/07/2006, 08h33
  3. Download fichier ok local mais pas en "web"
    Par Mystic eyes dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 20/06/2006, 09h50
  4. probleme download fichier
    Par vali7 dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 07/06/2006, 14h39
  5. download fichier avec espace dans le nom
    Par cb68 dans le forum Langage
    Réponses: 8
    Dernier message: 23/11/2005, 10h00

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