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 :

[debutant] Utilisation de FileUpload


Sujet :

Servlets/JSP Java

  1. #1
    Membre habitué Avatar de Iphelias
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2007
    Messages : 126
    Points : 130
    Points
    130
    Par défaut [debutant] Utilisation de FileUpload
    Bonjour voila j'aimerais pouvoir faire des Upload de fichiers mais je suis encore débutant.

    Après quelques recherche, j'ai trouvé la librairie suivante : FileUpload

    Toutefois je ne sais pas comment ajouter une nouvelle librairire dans mon serveur Tomcat ( je travail en Local) pour le moment.
    J'ai copié le .jar dans ..\Tomcat 5.5\common\lib
    Et que faut il que je fasse d'autre ??

    De plus j'aimerais trouvé qqn qui puisse m'expliquer simplement et avec des exemples l'utilisation de cette librairie!


    Voila j'espere que qqn pourra m'aider ...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 511
    Points : 386
    Points
    386
    Par défaut
    Tu ajoute le jar dans:
    WebContent\WEB-INF\lib sous eclipse
    pour la classe d'acquisition je me suis inspiré de

    Ton fichier sera enregistré dans le répertoire tmp

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 47
    Points : 43
    Points
    43
    Par défaut
    Si tu utilises Eclipse (ou wsad), copie le "commons-fileupload-1.1.1.jar" et "commons-io-1.2.jar" dans le WEB-INF\LIB puis renseigne le dans le build path (clique droit sur ton projet puis /properties/Java Build Path puis tu coches sur les 2 .jar ).
    voici un exemple parmi d'autres pour un upload :
    coté Java :
    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
    private void telechargerFile(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException {
    	try{
    		String 	nameFile 	= "";
    		String 	nameFileUpl 	= "";
    		boolean boolCreate	= true;
    		String	okUploade	= "0";
    		String value		= "";
     
    		FileItemFactory factory = new DiskFileItemFactory();
    		ServletFileUpload upload = new ServletFileUpload(factory);		
    		List items = upload.parseRequest(request);
     
    		 Iterator iter = items.iterator();
    		 while (iter.hasNext()) {
    			 FileItem item = (FileItem) iter.next();
     
    			 if (item.isFormField()) {
    				String name = item.getFieldName();
    				value = item.getString();				
    				nameFile = "allez OM.txt";
     
    			 } else {
    				nameFileUpl = item.getName();										
    				File uploadedFile = new File( nameFile );				 
    		   		item.write(uploadedFile);
    			 }
    		 }	
     
    		okUploade = "1";
    		request.setAttribute("nameFile", nameFile);
    		request.setAttribute("okUploade", okUploade);
    		request.setAttribute("action", value);
     
    	}catch(Exception e){
    		System.out.print("Exception = UploadServlet:telechargerFile() : ");
    		System.out.println(e.getMessage());		
    	}
    }
    ne surtout pas oublier de mettre un enctype="multipart/form-data" dans le formulaire comme ainsi :

    coté Html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form name="form" enctype="multipart/form-data" method="post" action="/MyServlet">
    	<input type="hidden" name="page" value="upload">
    	<input type="hidden" name="fic">	
    	<input type="file" id="myfile" name="myfile" class="text" onchange="doBrowse(this)" />	
    </form>
    Sachant que la méthode telechargerFile va dans un premier temps récupérer le champ fic et sa valeur dans la première partie de la boucle (if (item.isFormField()) ) puis le fichier dans le seconde.
    C'est sûrement pas la meilleure façon de faire (puisque je l'utilise ) mais ça fonctionne.
    MarsOran

  4. #4
    Membre habitué Avatar de Iphelias
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2007
    Messages : 126
    Points : 130
    Points
    130
    Par défaut
    Merci pour vos réponses j'ai réussi à ajouter les bon .jar
    Toutefois j'ai encore qques questions.

    Comment dois je préciser le lancement de telechargerFile ???

    Je m'explique, lorsque je valide mon fomulaire, j'appel ma Jsp, qui contient la fonction telechargerFile. Mais comment lancé cette fonction ??
    De plus a quoi correspondent les paramètres "HttpServletRequest request, HttpServletResponse response" ...

    Désolé si je suis pas doué, mais faut bien débuter

  5. #5
    Membre habitué Avatar de Iphelias
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2007
    Messages : 126
    Points : 130
    Points
    130
    Par défaut
    Je vais même Ajouter le code que j'utilise si cela peut vous aider ....

    Alors Le code de l'input file:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <FORM name="Monform" method=post action="/Mondrian/Statistiques_view.jsp" enctype="multipart/form-data">
     
    <label>Charger le fichier XML de la Statistique :</label>
    <input size=\"45\" type="file" id="XmlCube" name="file" tabindex="5"   >&nbsp;<img src="/imgs/bullet_mandat.gif" />
     
    <input type="submit" id="btsubmit" name="btsub" value="Valider" onClick="SubCube()"/>
     
    </FORM>
    Ma fonction Javascript appelée : (je passe par l' 'AJAX' pour appeler ma page de traitement, car je désire lancer le traitement tout en allant sur une autre page ici Statistiques_view).

    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
     
     function SubCube(){
     	var xhr_object = null; 
    	var data     = null; 
    	var filename = "Administration_tools.jsp"; 
     	var method="POST";
     
     	if(window.XMLHttpRequest) // Firefox 
            xhr_object = new XMLHttpRequest(); 
    	else if(window.ActiveXObject) // Internet Explorer 
    	   xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
    	else { // XMLHttpRequest non supporté par le navigateur 
    	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    	   return; 
    	} 
     
     
        var xml=document.getElementById('XmlCube').value;
    	data = "xml="+xml;
        alert(data);
     
      xhr_object.open(method, filename, true); 
     
    	xhr_object.onreadystatechange = function() { 
    	   if(xhr_object.readyState == 4) { 
    	     alert(xhr_object.responseText); 
     
    	         alert("Enregistrement ok");
     
    	   } 
    	} 
     
    	if(method == "POST") 
    	   xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    	xhr_object.send(data); 
      }
      </script>
    Ma Jsp de traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <%
    //Je récupère les champs de la variable POST
             
                            String xml="";
                            xml=request.getParameter("xml");
                            String nomFichier = xml;        
    %>
    le Champs String Xml contient l'url du fichier sur le poste client : ex : C:\toto\Fic.xml

    J'aimerais dans cette page uploader mon fichier

  6. #6
    Membre habitué Avatar de Iphelias
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2007
    Messages : 126
    Points : 130
    Points
    130
    Par défaut
    Voila ma solution :

    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
    try{
    DiskFileUpload fu = new DiskFileUpload();
    	// maximum size before a FileUploadException will be thrown
    	fu.setSizeMax(1000000);
    	// maximum size that will be stored in memory
    	fu.setSizeThreshold(4096);
    	// the location for saving data that is larger than getSizeThreshold()
    	fu.setRepositoryPath("/tmp");
    	String 	nameFileUpl 	= "";
    	List fileItems = fu.parseRequest(request);
    	Iterator i = fileItems.iterator();
     
    	while (i.hasNext()) {
    		FileItem fi = (FileItem) i.next();
    		String comment = fi.getString();
    		// filename on the client
    		String fileName = fi.getFieldName();
    		if(!fi.isFormField()){
    		// save comment and filename to database
    		nameFileUpl = fi.getName();
    		System.out.println(nameFileUpl);
    		File uploadedFile = new File(nameFileUpl);				 
       		fi.write(uploadedFile);
    		}
    	}
    }catch(Exception E){
    }
    Toutefois je n'arrive pas encore a sélectionné le repertoire de destination ..
    Si qqn a une idée ..

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 47
    Points : 43
    Points
    43
    Par défaut
    salut, pour choisir le répertoire de déstination, rien de plus simple, il suffit de donner le path que tu veux qand tu crés ton fichier à uploader, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File uploadedFile = new File("D:\\archives\\myAppli\\file.txt");
    avce ce code, t'aura ton fichier uploadé dans le réprtoire D:\archives\myAppli\ (je suis en windows, sinon, D:/archives/myAppli/) mais sous le nom de file.txt.

    Sinon, d'une manière générale, si tyu veux garder le nom du fichier originale, faire par exemple : (j'ai retouché ton code)
    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
    try{
    	DiskFileUpload fu = new DiskFileUpload();
    	// maximum size before a FileUploadException will be thrown
    	fu.setSizeMax(1000000);
    	// maximum size that will be stored in memory
    	fu.setSizeThreshold(4096);
    	String 	nameFileUpl 	= "";
    	List fileItems = fu.parseRequest(request);
    	Iterator i = fileItems.iterator();
     
    	while (i.hasNext()) {
    		FileItem fi = (FileItem) i.next();
    		String comment = fi.getString();		
    		String fileName = fi.getFieldName();
    		if(! fi.isFormField() ){			
    			nameFileUpl = fi.getName();
    			String filePath = "D:\\archives\\" + getNameFile(nameFileUpl, "win");
    			System.out.println(filePath);
    			System.out.println(nameFileUpl);
    			File uploadedFile = new File(filePath);				 
    	   		fi.write(uploadedFile);
    		}
    	}
    }catch(Exception E){
    }
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	public static String getNameFile(String path, String OS){
    					String sep = "/";
    					if( OS.equalsIgnoreCase("win") )
    						sep = "\\";
    					return  path.substring(path.lastIndexOf(sep) + 1);
    				}
    je n'ai pas tésté mais ça devrait fonctionner. tiens moi au courant.
    MarsOran

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

Discussions similaires

  1. [debutant]Utiliser des matrices en C
    Par Battosaiii dans le forum C
    Réponses: 2
    Dernier message: 13/11/2005, 20h45
  2. [debutant] Utilisation de l'operateur = dans une classe
    Par Battosaiii dans le forum Débuter
    Réponses: 8
    Dernier message: 10/11/2005, 23h01
  3. [debutant]Utiliser friend method
    Par Battosaiii dans le forum Débuter
    Réponses: 4
    Dernier message: 06/11/2005, 11h23
  4. [debutant]utilisation de bcp
    Par christophebmx dans le forum Outils
    Réponses: 2
    Dernier message: 19/08/2005, 09h47
  5. [Debutant] Utilisation de la touche "Entrée"
    Par Dextro dans le forum Composants
    Réponses: 2
    Dernier message: 28/04/2005, 09h42

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