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 :

Traitement de formulaire et fileUpload


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 238
    Par défaut Traitement de formulaire et fileUpload
    Bonjour,

    Voilà mon problème. Pour un projet, je dois créer une page jsp qui doit permettre d'uploader un fichier et en même temps de récupérer des données dans des zones de texte et des listes déroulantes.

    Pour l'instant ma jsp ressemble à ç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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <html:form action="showReportGen" onsubmit="return checkFields();">
    
    <span class="texte_gris">
    <br />
    
    <table border=0>
    	<TR>
    		<TD class="texte_gris"><fmt:message key="form.fileZip" /></TD>
    		<TD>
    			<input id="fileName" name="fileName" size="25" type="file">
    		</TD>
    	</TR>
    	<TR>
    		<TD class="texte_gris"><fmt:message key="form.domaine" /></TD>
    		<TD>
    			<html:select property="domaine">
    				<html:options collection="listeDomaine" property="value" labelProperty="label"/>
    			</html:select>
    		</TD>
    	</TR>
    	<TR>
    		<TD class="texte_gris"><fmt:message key="form.isPrecedentMonth" /></TD>
    		<TD>
    			<fmt:message key="form.oui" /><INPUT type=radio checked id="isPrecedentMonth" name="isPrecedentMonth" value="1" onClick="Choix(this.form)"> - 
    			<fmt:message key="form.non" /><INPUT type=radio id="isPrecedentMonth" name="isPrecedentMonth" value="0" onClick="Choix(this.form)">
    		</TD>
    	</TR>
    	<TR Id="chooseDate">
    		<TD class="texte_gris"><fmt:message key="form.moisAnnee" /></TD>
    		<TD>
    			<html:select property="mois">
    				<html:options name="listeMois"/>
    			</html:select>
    			<html:select property="annee">
    				<html:options name="listeAnnee"/>
    			</html:select>
    		</TD>
    	</TR>
    </table>
    </span>
    
    <html:submit><fmt:message key="button.submit"/></html:submit>
    </html:form>
    Le but de cette page est que l'utilisateur renseigne le nom du fichier contenant les données source qui vont être traitées dans la suite.
    Ce que j'aurai besoin de faire en plus :
    une fois que l'utilisateur à renseigner le nom du fichier, le télécharger dans le serveur (dans un répertoire quelconque ou à définir) et ensuite faire mes traitements...

    Pourrez-vous m'aider?

  2. #2
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Bonjour,

    comme tu utilises Struts, pourquoi ne pas utiliser FormFile dans ton formulaire et la balise <html:file /> ?

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 238
    Par défaut
    Tout simplement parce que je n'y avais pas pensé

    En suivant la FAQ de Struts (http://java.developpez.com/faq/struts/?page=files)
    j'ai donc ajouté ma balise <html:file />, le bean et complété mon action comme suit :
    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
    ...
    UploadActionForm theForm = (UploadActionForm) form;
    			FormFile formFile = theForm.getFichier();
    			InputStream in = formFile.getInputStream();
    			String monPath = "C:\\";
    			FileOutputStream fout = new FileOutputStream(monPath
    					+ formFile.getFileName());
    			BufferedOutputStream bout = new BufferedOutputStream(fout);
     
    			byte[] b = new byte[in.available()];
    			while ((in.read(b)) != -1) {
    				bout.write(b, 0, b.length);
    			}
    			bout.flush();
    			fout.close();
    			in.close();
    ...

    Par contre, lorsque je valide mon formulaire, j'ai l'erreur 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
    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
    java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException
            at java.lang.Class.getDeclaredConstructors0(Native Method)
            at java.lang.Class.privateGetDeclaredConstructors(Class.java:2328)
            at java.lang.Class.getConstructor0(Class.java:2640)
            at java.lang.Class.newInstance0(Class.java:321)
            at java.lang.Class.newInstance(Class.java:303)
            at org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:143)
            at org.apache.struts.util.RequestUtils.getMultipartHandler(RequestUtils.java:562)
            at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:428)
            at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:804)
            at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
            at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
            at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:585)
            at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
            at java.security.AccessController.doPrivileged(Native Method)
            at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
            at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
            at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:245)
            at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:50)
            at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:156)
            at java.security.AccessController.doPrivileged(Native Method)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:152)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
            at org.objectweb.jonas.web.catalina55.ResetAuthenticationValve.invoke(ResetAuthenticationValve.java:62)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
            at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
            at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
            at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
            at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
            at java.lang.Thread.run(Thread.java:595)

  4. #4
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Tu as bien declaré ton formulaire en ajoutant l'attribut enctype="multipart/form-data"?

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 238
    Par défaut
    Oui, comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:form action="showReportGen" onsubmit="return checkFields();" method="post" enctype="multipart/form-data">

  6. #6
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Bonjour,

    il te manque le commons-fileupload.jar

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

Discussions similaires

  1. traitement de formulaires: quelle méthodolgie?
    Par redwire dans le forum Langage
    Réponses: 4
    Dernier message: 07/10/2006, 09h42
  2. [MySQL] Traitement de Formulaire : générer des ensemble à partir d'une boucle foreach
    Par yodaazen dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/10/2006, 15h28
  3. [SERVLET]Traitement de formulaire paramètres GET et POST
    Par ederf dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 19/05/2006, 13h56
  4. [SGBD] Traitement Données Formulaire Vers BDD Mysql
    Par Thierry8 dans le forum SQL Procédural
    Réponses: 10
    Dernier message: 29/03/2006, 23h22
  5. [C#][2.0] Traitement de Formulaire (Insert / Update)
    Par softflower dans le forum ASP.NET
    Réponses: 7
    Dernier message: 17/02/2006, 13h44

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