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 via un formulaire


Sujet :

Servlets/JSP Java

  1. #1
    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 Upload via un formulaire
    Bonjour,
    je poste donc un nouveau message concerné l'upload de fichier via un formulaire. Cependant mon formulaire ne contient pas qu'un champs file.
    J'arrive à uploader le fichier mais pas à récupérer en meme temps les infos des autres champs du formulaire.
    Donc voici mon code:

    le formulaire: (basique juste pour un exemple, histoire que je comprenne comment ca fonctionne)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form action="fichier.do" enctype="multipart/form-data" method="POST">
    	<p>Nom du fichier : <input type="text" name="nom" /></p>
    			<input type="file" name="file1"><br>
    			<input type="Submit" value="UploadFile"><br>
    		</form>
    Ma 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
     
    FileItemFactory factory = new DiskFileItemFactory();
     
    			// Create a new file upload handler
    			ServletFileUpload upload = new ServletFileUpload(factory);
    			 System.out.println("-------Test-------------");
    			 //DeferredFileOutputStream objet = new DeferredFileOutputStream(1, new File("test"));
    			// Parse the request
    			List items = upload.parseRequest(request);
    			 System.out.println("-------Test-------------");
    			// Process the uploaded items
    			Iterator iter = items.iterator();
    			while (iter.hasNext()) {
    				System.out.println(items.get(0));
    				//String ligne  = (String) iter.next();
    				//System.out.println (ligne);
    			    FileItem item = (FileItem) iter.next();
    			  if (!item.isFormField()) {
    			        String fieldName = item.getFieldName();
    			        System.out.println(fieldName);
    			         String fileName = item.getName();
    			         System.out.println(fileName);
    			         if (fileName != null) {
    			           fileName = FilenameUtils.getName(fileName);
    			         }
     
    			        File uploadedFile = new File
    			        	("C:\\Program Files\\Apache Software Foundation\\Tomcat 7.0\\webapps\\UploadFichier\\" +
    			        			fileName);
    			        item.write(uploadedFile);
    			  }
    			}
    En gros ma question est comment récupérer à partir de :
    List items = upload.parseRequest(request);
    La liste des élèments du formulaire ?
    J'ai essayé une fois l'upload réaliser d'utiliser quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Enumeration e = request.getParameterNames();
    String nomFic;
    while (e.hasMoreElements())
    {
    	String key = e.nextElement();
            if(key.equals( "nom"))
    	{
    	     System.out.println("-----------------Fichiers");
    	     nomFic = request.getParameter(key);
     
    	}
    }
    Mais je n'arrive pas à récupérer quoi que ce soit une fois l'upload terminé.
    Merci pour vos conseils!

  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
    Voila j'ai trouvé il faut utiliser un lib : com.oreilly.servlet.multipart

    Un ptit exemple d'utilisation si quelqu'un en a besoin;

    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
     
    public void doPost (HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {
     
            /** récupère la date courante **/ 
            Date d = new Date();
     
    	/** forge une chaine de caractère contenant la date **/
            String timestamp = new String(d.getMinutes() + "-" + d.getSeconds());
     
    	/** crée un nouveau multipart parser, la taille des objets parsés étant de 10 MB au maximum **/  
            MultipartParser mp = new MultipartParser(request, 10*1024*1024); // 10MB
            Part part;
     
    	/** itére tous les parties **/
            while ((part = mp.readNextPart()) != null) {
    	    /** s'il s'agit du fichier **/
                if (part.getName().equals("infile")) {
     
    	        /** recupere les données sous la forme d'un FilePart **/
                    FilePart filePart = (FilePart) part;
                    String fileName = filePart.getFileName();
     
    		/** recopie dans un nouveau fichier **/
                    if (fileName != null) {
                        long size = filePart.writeTo(new File("/tmp/data" + timestamp));
                        break;
                    }
     
    	    /** s'il s'agit de la zone de texte **/		
                } else if (part.getName().equals("indata")) {
     
    	        /** recupere les données sous la forme d'un objet ParamPart **/
                    ParamPart paramPart = (ParamPart) part;
     
    		/** récupere la valeur du champ "indata" **/
                    String indata = paramPart.getStringValue();
     
    		/** pour écrire dans un fichier **/
                    PrintWriter fos = new PrintWriter(new FileWriter("/tmp/data" + timestamp));
    		fos.print(indata);
     
                    fos.close();
                }
            }
    }
    et le formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form  enctype="multipart/form-data" action="action" method="post"><br>
    <textarea name="indata" cols="70" rows="10"></textarea><br>
    <input type="file" name="infile"><br>
    <input type="submit" name="submit" value="Continue"><br>
    </form><br>
    Bonne journée

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/10/2008, 03h28
  2. Réponses: 4
    Dernier message: 22/02/2008, 12h43
  3. Réponses: 4
    Dernier message: 29/11/2007, 13h09
  4. [Upload] Upload via formulaire
    Par Invité dans le forum Langage
    Réponses: 7
    Dernier message: 20/04/2007, 11h45
  5. [Upload] Formulaire puis Upload via FTP
    Par FredMines dans le forum Langage
    Réponses: 11
    Dernier message: 13/07/2006, 16h36

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