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 :

Upload d'une image a partir d'une servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Points : 71
    Points
    71
    Par défaut Upload d'une image a partir d'une servlet
    Bonjour tout le monde,

    Dans le cadre de mon projet, j'aimerais proposer a un utilisateur de choisir une image a partir d'un explorateur qui serait ensuite copié sur le serveur. J'ai cru comprendre qu'il fallait que j'utilise l'upload. J'ai donc fais un <input type="file" name="image" /> dans ma JSP ensuite je vois pas trop quoi faire dans ma servlet.

    Si quelqu'un a un exemple assez concret avec des explications claires car tout ce que j'ai trouvé ne l'etais pas sur le web.

    Merci beaucoup

  2. #2
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    J'utilise l'api commons FileUpload ici

    pour le formulaire c'est bien un input type="file"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="formulaire" method="post" enctype="multipart/form-data" >

  3. #3
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Points : 71
    Points
    71
    Par défaut
    Aurais tu un exemple concret et indiquer s'il y a des jar a télécharger ou autre ?

    Merci

  4. #4
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Tu as tout ce qu'il te faut sur le site : exemple et jar à télécharger.

    et de nombre sujet qui traite de cet api sur ce forum.

  5. #5
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    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
     
    String userRoot = conf.getString("xerox_root_path");
     
    File savedFileInFileAttente = null;
    String sourceFileName ="";
    /*
     * Debut de l'upload du fichier
     */
    int sizeMax = Integer.parseInt(conf.getString("maxTailleUploadDocElec"));//50 Mo
     
     
     
    //On vérfie si il y a une demande d'upload de fichier dans la request
    boolean isMultipart =  ServletFileUpload.isMultipartContent(request);            
    if(isMultipart)
    {
     
    	//Create a factory for disk-based file items
    	DiskFileItemFactory factoryy = new DiskFileItemFactory();
     
                 //Ceci est optionnel,c'est juste pour éviter la saturation mémoire
    	int sizeMaxForJVM = Integer.parseInt(conf.getString("maxTailleUploadDocElecJVM")); //50Ko
    	/*taille du fichier à partir de laquelle le transfert se fait au niveau disque.*/
    	factoryy.setSizeThreshold(sizeMaxForJVM);
    	/*chemin pour l'ecriture disque si activé  Optionnel aussi par défaut c'est le répertorie temp du serveur*/
    	factoryy.setRepository(new File(conf.getString("uploadDocElecPath")));
     
    	//Create a new file upload handler
    	ServletFileUpload upload = new ServletFileUpload(factoryy);    
     
    	/* Taille maximale tolérable pour un fichier 50 Mo
    	 *  Ceci est aussi optionnel si il n'y  a pas de limite sur la taille des documents à uploader
    	*/	
    	upload.setSizeMax(sizeMax);
     
    	/*
    	 *  On liste les champs du formulaire pour différencier les champs de type imput="file" des autres champs
    	 */
    	List items = upload.parseRequest(request);	
    	Iterator iter = items.iterator();
     
    	while (iter.hasNext())
    	{
    		FileItem item = (FileItem) iter.next();
    		//on vérifie bien que ce n'est pas un champ de formulaire mais bien un fichier
    		if(!item.isFormField())
    		{
    			sourceFileName = item.getName();
    			if(item.getFieldName().equals("Nom associé à l'imput File"))
    			{
    				File fileToUpload = new File(item.getName());
    				/* chemin ou le fichier uploader sera placer*/
    				savedFileInFileAttente = new File(userRoot + "\\" + userData.getUserID() + "\\" + fileToUpload.getName());
    				item.write(savedFileInFileAttente);
    			}
    		}
    		else
    		{
    			System.out.println("Ceci n'est pas un fichier mais un champ de saisie du formulaire")
     
    		}
    	}
     
    	/*
    	 * Contrôle si le chemin du fichier n'a pas été édtier à la main Vive IE
    	 */
    	if(savedFileInFileAttente.length()==0)
    	{
    		System.out.println("erreur");
    	}
     
    }
    else
    {
    	System.out.println("Ce n'est pas un formulaire multipart");
    }

    Edit : j'ai commenté le code pour qu'il soit plus compréhensible

  6. #6
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Points : 71
    Points
    71
    Par défaut
    J'ai ajouté ce code dans ma servlet. Pour le moment il ne passe pas dans ma boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    				if(isMultipart){
    J'ai pourtant bien ajouté enctype="..." :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="/Camping2009/listeCamping" method="get" target="gestion" name="formulaire" enctype="multipart/form-data">
    Voyez vous l'erreur ?

  7. #7
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Points : 71
    Points
    71
    Par défaut
    Il me prend un doute, etant donné que j'envois un fichier, vaut il mieux que j'utilise la fonction doPost plutot que doGet ?

    Pour tester j'ai copié mon code dans doPost mais ca marche pas j'ai un probleme au niveau de la recupération des parametres de la requete. Faut il utiliser autre chose que request.getParameter() si on utilise la méthode doPost ?

    Merci pour vos réponses

  8. #8
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    L'upload de document se fait uniquement par do post il me semble.

    ma servlet utilise le doPost pour l'ulpload de forumlaire et via de l'xmlrequest j'appelle le doGet pour savoir ou j'en suis dans mon upload et informer l'utilisateur.


    Sinon de manière général on redirige souvent le doGet dans le doPost ou inversement et certaine fois on bloque le doGet pour obliger d'acceder à une servlet via un formulaire.

    Cela dépend des besoin que tu as derriere.

  9. #9
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Points : 71
    Points
    71
    Par défaut
    Pour résumé un peu j'ai un menu qui renvoie la servlet correspondante et dans ce menu j'ai n boutons avec n formulaires chacun ayant la meme propriété et donc dans la servlet correspondante j'ai des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(request.getParameter("bouton").equalsIgnoreCase("Gestion des campings")){
    qui me permet dans ce cas d'envoyer les infos pour un premier affichage car dans mon menu j'ai un bouton nommé "Gestion des campings". Ensuite j'ai des boutons dans ma JSP d'affichage des campings qui sont suivant ou précédent par exemple qui on aussi la propriété .

    Donc quand je recopies mon code de mon doGet dans mon doPost le premier passage fonctionne il m'affiche bien ma JSP des campings mais ensuite quand je veux appuyer sur le bouton "Enregistrer" il repasses par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(request.getParameter("bouton").equalsIgnoreCase("Gestion des campings")){
    et se bloque.

    Voyez vous d'où ca peut venir ?

  10. #10
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Donc quand je recopies mon code de mon doGet dans mon doPost
    tu ne recopie pas le code mais plutot ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    	{			
    		doGet(request, response);		
    	}

    il faut que tu revois le mécanisme de fonctionnement de ta navigation dans ton appli ca pourrait être de commencer par un degré de contrôle
    d'abord tester ta variable d'enregistrement avant ta variable bouton

    qu'est ce qui diffère de tout tes formulaire ?

  11. #11
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Points : 71
    Points
    71
    Par défaut
    J'ai essayé aussi de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doGet(request, response);
    mais ca revient au meme ca bloque toujours sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(request.getParameter("bouton").equalsIgnoreCase("Gestion des campings")){
    Par
    tester ta variable d'enregistrement
    tu entend quoi ? Vérifié les autres paramètres envoyés par la JSP ?

  12. #12
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Dans le code avant de faire le contrôle de la valeur de bouton regarde
    avant si c'est un enregistrement que tu dosi faire.


    montre nous le code de ta servlet et aussi le source html de ta page contenant le menu

  13. #13
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Points : 71
    Points
    71
    Par défaut
    Source html de mon menu :

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <link rel="stylesheet" type="text/css" href="site.css"/>
    <title>Insert title here</title>
    </head>
    <body>
    <div id="menu">
    Menu</br>
    <form action="/Camping2009/listeCoeur" method="get" target="gestion">
    <input type="submit" value="Gestion des coups de coeur" name="bouton" style="width:230px"  />
    </form>
    <form action="/Camping2009/listeOS" method="get" target="gestion">
    <input type="submit" value="Gestion des offres speciales" name="bouton" style="width:230px" />
    </form>
    <form action="/Camping2009/listeLocatif" method="get" target="gestion">
    <input type="submit" value="Gestion des locatifs" name="bouton" style="width:230px"/>
    </form>
    <form action="/Camping2009/listeRegion" method="get" target="gestion">
    <input type="submit" value="Gestion des régions" name="bouton" style="width:230px"/>
    </form>
    <form action="/Camping2009/listeCamping" method="get" target="gestion">
    <input type="submit" value="Gestion des campings" name="bouton" style="width:230px"/>
    </form>
    <form action="/Camping2009/listePromo" method="get" target="gestion">
    <input type="submit" value="Gestion des promotions" name="bouton" style="width:230px" />
    </form>
    <a href="http://monsiteweb" target="_top">Quitter l'administration</a>
    </div>
    </body>
    </html>
    Code de ma servlet (un peu long dsl):

    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    package Servlet;
     
    import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.SQLException;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Vector;
     
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.FileUploadException;
    import org.apache.commons.fileupload.disk.DiskFileItem;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
     
    import pluriel.Campings;
    import pluriel.CoupsCoeur;
    import pluriel.Regions;
    import singulier.Camping;
    import singulier.CoupCoeur;
     
    /**
     * Servlet implementation class listeCamping
     */
    public class listeCamping extends HttpServlet {
    	private static final long serialVersionUID = 1L;
     
        /**
         * @see HttpServlet#HttpServlet()
         */
        public listeCamping() {
            super();
            // TODO Auto-generated constructor stub
        }
     
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		Vector v, z;
    		v=new Vector();
    		z= new Vector();
    		int i;
    		try {
    			v=Campings.listeCampings();
    			z=Regions.listeRegions();
    			RequestDispatcher rd = getServletContext().getRequestDispatcher("/listeCamping.jsp");
    			if(request.getParameter("bouton").equalsIgnoreCase("Gestion des campings")){
    				i=0;
     
    				request.setAttribute("indice", i);
    				request.setAttribute("liste", v);
    				request.setAttribute("regions",z);
    			}
    			if(request.getParameter("bouton").equalsIgnoreCase(" > ")){
    				i=Integer.valueOf(request.getParameter("indice"));
    					if(i<v.size()-1){
    						i++;
    						request.setAttribute("liste", v);
    						request.setAttribute("indice", i);
    						request.setAttribute("regions",z);
    					}	else {
    						request.setAttribute("liste", v);
    						request.setAttribute("indice", i);
    						request.setAttribute("regions",z);
    					}
    			}
    			if(request.getParameter("bouton").equalsIgnoreCase(" < ")){
    				i=Integer.parseInt(request.getParameter("indice"));
    				if(i>0){
    					i--;
    					request.setAttribute("liste", v);
    					request.setAttribute("indice", i);
    					request.setAttribute("regions",z);
    				}else {
    					request.setAttribute("liste", v);
    					request.setAttribute("indice", i);
    					request.setAttribute("regions",z);
    				}
    			}
    			if(request.getParameter("bouton").equalsIgnoreCase("Enregistrer")){
    				Camping c;
    				c = new Camping();
    				//c.setNumCamping(Campings.listeCampings().size()+1);
    				c.setNomCamping(request.getParameter("nomcreation"));
    				c.setDescCamping(request.getParameter("descreation"));
    				c.setImgCamping(request.getParameter("imgcreation"));
    				c.setNumRegion(Integer.valueOf(request.getParameter("regioncreation")));
     
    				boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    				if(isMultipart){
    					File savedFileInFileAttente = null;
    					String sourceFileName ="";
     
    						//Create a factory for disk-based file items
    						DiskFileItemFactory factoryy = new DiskFileItemFactory();
     
    						//Create a new file upload handler
    						ServletFileUpload upload = new ServletFileUpload(factoryy);    
     
     
    						/*
    						 *  On liste les champs du formulaire pour différencier les champs de type imput="file" des autres champs
    						 */
    						List items = null;
    						try {
    							items = upload.parseRequest(request);
    						} catch (FileUploadException e1) {
    							// TODO Auto-generated catch block
    							e1.printStackTrace();
    						}	
    						Iterator iter = items.iterator();
     
    						while (iter.hasNext())
    						{
    							FileItem item = (FileItem) iter.next();
    							//on vérifie bien que ce n'est pas un champ de formulaire mais bien un fichier
    							if(!item.isFormField())
    							{
    								sourceFileName = item.getName();
    								if(item.getFieldName().equals("Nom associé à l'imput File"))
    								{
    									File fileToUpload = new File(item.getName());
    									/* chemin ou le fichier uploader sera placer*/
    									savedFileInFileAttente = new File( getServletContext().getRealPath("/")+"/Ressources/" + fileToUpload.getName());
    									try {
    										item.write(savedFileInFileAttente);
    									} catch (Exception e) {
    										// TODO Auto-generated catch block
    										e.printStackTrace();
    									}
    								}
    							}
    							else
    							{
    								System.out.println("Ceci n'est pas un fichier mais un champ de saisie du formulaire");
     
    							}
    						}
    					}
     
     
     
     
    				try {
    					Campings.enregistrer(c);
    					v=Campings.listeCampings();
    					i=v.size()-1;
    					request.setAttribute("liste", v);
    					request.setAttribute("indice", i);
    					request.setAttribute("regions",z);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    			if(request.getParameter("bouton").equalsIgnoreCase("Modifier")){
    				Camping c;
    				c = new Camping();
    				c.setNumCamping(Integer.parseInt(request.getParameter("id")));
    				c.setNumRegion(Integer.parseInt(request.getParameter("idRegion")));
    				c.setNomCamping(request.getParameter("nom"));
    				c.setDescCamping(request.getParameter("desc"));
    				c.setImgCamping(request.getParameter("imgmodif"));
    				try {
    					Campings.modifier(c);
    					v=Campings.listeCampings();
    					i=Integer.valueOf(request.getParameter("indice"));
    					request.setAttribute("liste", v);
    					request.setAttribute("indice", i);
    					request.setAttribute("regions",z);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    			if(request.getParameter("bouton").equalsIgnoreCase("Supprimer")){
    				Camping c;
    				c = new Camping();
    				c.setNumCamping(Integer.parseInt(request.getParameter("id")));
    				c.setNumRegion(Integer.parseInt(request.getParameter("idRegion")));
    				c.setNomCamping(request.getParameter("nom"));
    				c.setDescCamping(request.getParameter("desc"));
    				c.setImgCamping(request.getParameter("img"));
    				try {
    					Campings.supprimer(c);
    					v=Campings.listeCampings();
    					i=v.size()-1;
    					request.setAttribute("liste", v);
    					request.setAttribute("indice", i);
    					request.setAttribute("regions",z);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    			if (rd!=null){
    				rd.include(request,response);
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
     
    	/**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doGet(request,response);
    	}	
    }
    Voila je pourrais vous commenter si des choses vous semblent bizarre si jamais j'ai une explication. Je suis jeune developpeur et donc peut etre des methodes de travail un peu trop "ecolieres" si je puis dire

    Edit : je viens de faire un test sur mon paramètre "bouton" et donc lorsque je clique sur mon bouton "Gestion des campings" il prend bien la valeur et donc la servlet marche et me redirige vers la JSP mais le probleme vient ensuite, quand j'alimente mon formulaire et que j'appuis sur "Enregistrer", le paramètre "bouton" recu est null. Mais pourquoi ca je sais pas. J'ai la meme structure et methodes dans d'autres couples de servlet/JSP mais ca marche nickel la seule différence est que la j'utilise la methode doPost dans ce cas précis.

  14. #14
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Points : 71
    Points
    71
    Par défaut
    Je rajoute un post car du coup j'ai un peu chamboulé mon code. Je suis parti donc a utiliser la methode get dans mon formulaire et j'ai transformé ma méthode doGet dans ma servlet en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doPost(request,response);
    afin d'utiliser la méthode doPost. Du coup mon paramètre passe et je peux a nouveau enregistrer, naviguer dans mes enregistrements et tout. Mais je ne peux toujours pas entrer dans ma boucle if :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    				if(isMultipart){
    et donc uploader d'image. Alors que mon formulaire est toujours en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enctype="multipart/form-data"
    Quelqu'un voit d'où ca peut venir ?

    Est ce que ca pourrait venir de la version de mes jar que j'ai mis dans mon dossier WEB-INF / lib ? c'est commons-fileupload-1.2.jat et commons-io-1.4.jar ?

  15. #15
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Points : 71
    Points
    71
    Par défaut
    J'ai encore avancé dans mon debug, alors je suis obligé de passer par la methode doPost car sinon il ne detecte pas la requete comme etant multipart meme si je met doPost(request,response) dans doGet et que je met la methode doGet dans le formulaire.

    Ceci etant, je ne peux pas récupéré mes paramètres avec la methode doPost, avec doGet je fais ceci pour construire mon objet Camping :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    c.setNomCamping(request.getParameter("nomcreation"));
    						c.setDescCamping(request.getParameter("descreation"));
    						c.setImgCamping(request.getParameter("imgcreation"));
    						c.setNumRegion(Integer.valueOf(request.getParameter("regioncreation")));
    Mais désormais ils ont tous la valeur null.

    En bricolant j'ai réussi tout de meme a récupéré la valeur du bouton en faisant ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DiskFileUpload upload1 = new DiskFileUpload();
    				List items1;
    				items1 = upload1.parseRequest(request);
    				Iterator itr1 = items1.iterator();
    				while(itr1.hasNext()){
    				FileItem item = (FileItem) itr1.next();
    				if(item.getFieldName().equals("bouton")){
    					String type = item.getString();
    					System.out.println(type.toString());
    					if(type.toString().equalsIgnoreCase("Enregistrer")){
    J'ai donc disséquer ma requete, chercher le nom de mon bouton et apres verifie que sa valeur correspondait bien a l'action que je voulais faire ici Enregistrer.

    Autant dire que c'est un peu fastidieux et il faut que je recupere encore 4 paramètres pour construire mon objet Camping.

    Connaissez vous une méthode plus rapide ?

    Merci

  16. #16
    Membre confirmé
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Points : 642
    Points
    642
    Par défaut
    Dans ce cas la tu es obligé de test un à un tes champs

    oublie pas d'ajouter le contôle pour différencier les documents uploader des champs de ton formulaire avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(fileItem.isFormField())
             if(item.getFieldName().equals("bouton"))
    Autre chose je vois que tu passes toujours par la même servlet,
    pour plus de clater et alléger ton code dans le cas de l'upload du document tu devrais te faire une servlet spécifique à l'upload qui ne ferait que ca.

Discussions similaires

  1. [Python 3.X] Créer une image png à partir d'une image de format quelconque avec Python
    Par bguy4 dans le forum Général Python
    Réponses: 3
    Dernier message: 30/10/2014, 10h49
  2. détourage contour d'une fenêtre a partir d'une image
    Par ->maxoume<-{loul} dans le forum Windows
    Réponses: 1
    Dernier message: 24/07/2007, 11h30
  3. Récupérer une image JPEG à partir d'une vidéo
    Par kurul1 dans le forum C++Builder
    Réponses: 8
    Dernier message: 09/08/2006, 10h51
  4. Réponses: 13
    Dernier message: 23/06/2006, 12h12
  5. Poids d'une image a partir d'une url
    Par matique dans le forum Langage
    Réponses: 4
    Dernier message: 11/02/2006, 20h41

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