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 :

Formulaire avec upload fichier et servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 103
    Points
    103
    Par défaut Formulaire avec upload fichier et servlet
    Bonjour,

    J'ai une page jsp contenant un formulaire. Ce formulaire appelle une servlet, cette servlet récupère les champs du formulaire (type="text") pour alimenter une base de données.

    Problème... cette page jsp contient également un champs (type="file") permettant l'upload d'un fichier sur le serveur par appel de cette même servlet (utilisation de Apache common fileupload).

    J'ai bien réussis à implémenter la fonction d'upload du fichier en utilisant une autre servlet à partir d'une page html contenant uniquement le champs de type "file" (enctype="multipart/form-data").

    Le problème c'est que je ne sais pas comment implémenter l'ajout de mes données dans ma base et l'upload du fichier via la même servlet. Je précise que j'ai fais plus que deux servlet car j'ai carrément créé un autre projet pour faire le test d'upload de fichier. Je suppose que cela est du au enctype de mon formulaire qui lorsqu'il a comme valeur "multipart/form-data" me permet bien de récupérer les infos pour l'upload de mon fichier mais m'empeche de réupérer mes champs textes. De plus structurellement parlant est-il préférable de faire deux servlets ? Ou bien serait-il plus propre de gérer l'upload dans la page jsp avec les taglib ? Bref, je ne sais pas trop comment organiser tout ça...
    Bref, pour faire simple j'aimerai pouvoir gérer les deux codes ci-dessous dans la même servlet... ou savoir comment je dois gérer cela si cette façon n'est pas appropriée.

    Merci pour votre aide.


    Extrait de la servlet gérant l'ajout des infos dans la base :
    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
     
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		String toDo = request.getParameter("Submit");			
     
    		try {
    			// AJOUT
    			if(toDo.equals("Ajouter"))
    			{
    				MusicFile mf = null;
     
    				MusicFileLst lst = (MusicFileLst) request.getSession(true)
    						.getAttribute("musicfilelst");
    				if (lst == null)	{
    					lst = new MusicFileLst();
    				}
     
    			    response.setContentType("text/html");
    				mf = new MusicFile(request.getParameter("fileToUpload"),
    						request.getParameter("name"),
    											request.getParameter("artist"),
    											request.getParameter("albumName"),	
    											Integer.parseInt(request.getParameter("albumYear")),
    											request.getParameter("genreNom"),
    											request.getParameter("bitrate"),	
    											request.getParameter("uploaderPseudo"),
    				 							request.getParameter("uploaderEmail"),db);				 							
    				mf.save();
    				lst.addClass(mf);
    				request.getSession().setAttribute("musicfilelst", lst);
    				getServletContext().getRequestDispatcher("/AddFile.jsp").forward(
    						request, response);
    			}
    Code de l'autre servlet qui fais uniquement l'upload de fichier :
    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
     
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	    PrintWriter out = response.getWriter();
    	    response.setContentType("text/html");
     
    		DiskFileItemFactory  fileItemFactory = new DiskFileItemFactory ();
     
    		ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory);
    		try {
    			List<FileItem> items = (List<FileItem>)uploadHandler.parseRequest(request);
    			Iterator<FileItem> itr = (Iterator<FileItem>)items.iterator();
    			while(itr.hasNext()) {
    				FileItem item = (FileItem) itr.next();
     
    				if(item.isFormField()) {
    					out.println("File Name = "+item.getFieldName()+", Value = "+item.getString());
    				} else {
     
    					File file = new File(destinationDir,item.getName());
    					item.write(file);
    				}
    				out.close();
    			}
    		}catch(FileUploadException ex) {
    			log("Error encountered while parsing the request",ex);
    		} catch(Exception ex) {
    			log("Error encountered while uploading file",ex);
    		}
     
    	}
    Un extrait du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <form action="MShareMainServlet" method="POST"> 
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
    		<tr><td colspan=2 align="center"><font face="Tahoma,Arial" size="60">MShare - Ajout fichier</font></td></tr>
    		<tr height="150"><td></td></tr>
    		<tr><td><a href="index.html">Retour à l'accueil</a></td></tr>
    		<tr><td>Fichier :</td><td><input type="file" name="fileToUpload"></td></tr>
    		<tr><td>Nom :</td><td><input type="text" name="name" size="100"></td></tr>
    		<tr><td>Artiste :</td><td><input type="text" name="artist" size="100"></td></tr>

  2. #2
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Bonjour, j'ai le meme probleme que toi, as tu trouvé une solution ?
    Merci

Discussions similaires

  1. Formulaire avec upload de vidéo
    Par achio350 dans le forum Langage
    Réponses: 1
    Dernier message: 07/12/2008, 19h43
  2. Formulaire avec upload
    Par sokebana dans le forum Langage
    Réponses: 3
    Dernier message: 19/11/2008, 23h12
  3. Réponses: 1
    Dernier message: 23/09/2008, 21h37
  4. formulaire avec upload
    Par Sheriff dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/12/2006, 08h51
  5. formulaire avec upload
    Par sami_c dans le forum ASP
    Réponses: 2
    Dernier message: 23/01/2006, 12h04

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