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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 averti
    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
    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