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 :

Valeurs des champs Formulaire/Servlets/Upload


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Valeurs des champs Formulaire/Servlets/Upload
    Bonjour,

    J'essaie d'uploader un fichier et insérer des informations du formulaires associer dans la bd. J'ai une page jsp dans laquelle j'ai le formulaire et une servlet qui est l'action de mon formulaire.

    L'upload s'effectue normalement comme il se doit seulement voilà quand j'essaie de récupérer les valeurs des champs de mon formulaire via HttpServletRequest.getParameter("nomChamp"), il me donne la valeur "null" pour tout mes champs. Pourtant l'upload s'effectue correctement et pourtant aussi c'est avec cette même méthode de récupération que j'effectue la connexion!

    Donc je ne sais s'il y a une astuce quand il s'agit de l'upload ou peut-être j'ai une erreur bête, une chose est certaine, je suis bloqué là dessus et ce depuis un temps! Alors je me confie à vous

    Si quelqu'un veut bien m'aider...merci d'avance!!!

    Voici le formulaire:
    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
    <form name="form" method="post" action="Upload" enctype="multipart/form-data" >
    		<table width="60%" height="50%" align="center" >
    			<tr><td colspan=2><input  type="file" name=chemin value="file"></td></tr>
    			<tr>  <td> Titre du Document: </td>       <td> <INPUT type="text" name=titre>  </td>    </tr>
    			<tr><td> Format: </td><td><INPUT type="text" name=format></td></tr>
    			<tr><td> Catégorie: </td>
    				<td>
    					<SELECT name=categ >
    						<OPTION>Proces_Verbal
    						<OPTION>Facture
    						<OPTION>Confidentiel
    					</SELECT>
    				</td>
    			</tr>
    			<tr><td colspan=2><input  type="submit" value="Créer"></td></tr>			
    		</table>
    et le traitement de la servlet:
    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
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    		throws ServletException, IOException {
    	// creation !!
    		User u=(User) request.getSession().getAttribute("tata");//Recupération de l'objet de session, précedemment nommé tata!
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            List uploadedItems = null;
            FileItem fileItem = null;
            System.out.println("La catégorie: "+request.getParameter("categ")+" et le titre: "+request.getParameter("titre")
            		+" et le format: "+request.getParameter("format"));
            String filePath = "F:\\CODEX\\Java\\WorkspaceEE\\Ged\\Catalogue\\"; // le chemin ou placer le doc
            try 
            {
    // iterate over all uploaded files
            	uploadedItems = upload.parseRequest(request);
            	Iterator i = uploadedItems.iterator();
            	while (i.hasNext()) 
            	{
            		fileItem = (FileItem) i.next();
            		if (fileItem.isFormField() == false) 
            		{
            			//  response.sendRedirect("indexxcfv.jsp");
            			if (fileItem.getSize() > 0) 
            			{
            				File uploadedFile = null;
            				String fichier = fileItem.getName(),
            						myFileName = "lkmlk",
            						slashType = (fichier.lastIndexOf("\\") > 0) ? "\\" : "/";
            				int startIndex = fichier.lastIndexOf(slashType);
            				// Ignore the path and get the filename
            				myFileName = fichier.substring(startIndex + 1, fichier.length());
            				// Create new File object
            				uploadedFile = new File(filePath, myFileName);
            				// Write the uploaded file to the system
            				fileItem.write(uploadedFile);
            			}
            		}
            	}

  2. #2
    Membre confirmé
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Points : 559
    Points
    559
    Par défaut
    Bonjour,
    la récupération des paramètres (request.getParameter) retourne en effet null sur une requête multi-part :

    Tu peux utiliser la solution suivante pour les récupérer :

    Annoter ta servlet pour gérer le multipart :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @MultipartConfig
    public class SubmitUpload extends HttpServlet {...
    Ajouter dans la servlet une méthode permettant de traiter la récupération d'une part :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	private static String getValue(Part part) throws IOException {
    		BufferedReader reader = new BufferedReader(new InputStreamReader(part.getInputStream(), "UTF-8"));
    		StringBuilder value = new StringBuilder();
    		char[] buffer = new char[1024];
    		for (int length = 0; (length = reader.read(buffer)) > 0;) {
    			value.append(buffer, 0, length);
    		}
    		return value.toString();
    	}
    Tu peux ensuite récupérer les paramètres dans le doPost de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    PrintWriter out = response.getWriter();
    out.print(getValue(request.getPart("titre")));

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/07/2010, 14h12
  2. Réponses: 5
    Dernier message: 06/01/2009, 11h22
  3. [AJAX] Garder les valeurs des champ d'un formulaire en mémoire
    Par joss91 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/04/2008, 09h56
  4. Réponses: 3
    Dernier message: 20/09/2006, 16h07
  5. [servlet][tester la valeur des champs récupérés]
    Par maya5 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/05/2004, 10h06

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