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 :

Lire un fichier d'un poste local depuis une JSP


Sujet :

Servlets/JSP Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Lire un fichier d'un poste local depuis une JSP
    Bonjour à tous,

    dans ma jsp, j'ai un input de type "file" pour sélectionner un fichier sur le poste local.
    Je sélectionne donc "C:\montest.txt", et je lance le traitement.
    Et dans ma jsp, je voudrais lire le contenu de ce fichier pour placer les lignes dans un ArrayList<String>.
    J'ai tenté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fluxEntree = new BufferedReader(new FileReader( "C:\montest.txt"));
    , mais bien évidemment, ça ne fonctionne pas , la jsp cherche le fichier sur le serveur, et ne le charge pas depuis le poste local.

    Quelle est la bonne méthode à utiliser ?

    Merci de votre aide.

  2. #2
    Membre averti Avatar de florentB
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Points : 441
    Points
    441
    Par défaut
    regarde du côté de fileupload. Je pense que ça peut t'aider

  3. #3
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    Bonjour,

    Personnellement je fais cela dans une servlet qui est appelée après validation du formulaire lié au choix du fichier.

    je traite le flux fichier et je renvoi le tout à la JSP.

  4. #4
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    j'ai retrouvé un vieux morceau de code ... cela peut peut être t'aider ....
    et il y a surement mieux ...

    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
     
    					//variables
    						BufferedReader lecteurAvecBuffer = null;
    						String ligne;
     
    					 	//Create a new file upload handler 
    						DiskFileUpload upload = new DiskFileUpload();
    						//Parse the request
    						List items = upload.parseRequest(request);
    						//Process the upload items 
    						Iterator iter=items.iterator();
     
    						while(iter.hasNext())
    						{
    							FileItem item = (FileItem) iter.next();	
     
    							//propriete fichier 
    							String fieldName=item.getFieldName();
    							String str_inputFileName=item.getName();
    							String contentType= item.getContentType();
    							boolean isInMemory=item.isInMemory();
    							long sizeInBytes=item.getSize();
     
    							//repertoire destination 
    							ServletContext sc = getServletContext();
    							String destPath = sc.getRealPath("/fichiersCsv");
     
    							//si fichier est selectionn� 
    							if (! str_inputFileName.trim().equals(""))
    							{					
    								/** variables **/
    								String str_partID="";
    								int cpt=0;
     
    								/** fichier **/
    								String str_outputFileName=str_inputFileName.replace('\\','/');
    								String [] urlFile= str_outputFileName.split("/");
    								str_outputFileName=urlFile[urlFile.length-1];
     
    								try
    								{
    								  /** copie du fichier **/
    								  File uploadedFile=new File(destPath,str_outputFileName);
    								  item.write(uploadedFile);
     
    								 /** Ouverture et lecture du fichier **/
    								 FileInputStream file = new FileInputStream(destPath+"/"+str_outputFileName);
    								 lecteurAvecBuffer = new BufferedReader(new InputStreamReader(file,"ISO-8859-1"));
     
    								 /** parcourt du fichier **/
    								 while ((ligne =  lecteurAvecBuffer.readLine() ) != null)
    								 {
    								 	//init variables
    								 	cpt++;
    								 	estValid=true;
     
    								 	//variables
    									String [] valLigne=ligne.split(";");
    									String user_IdProsCand=valLigne[0];
    .......
    coté Servlet, je récupère le fichier du formulaire , je le copie sur le serveur et je le lis ...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    ça peut tout à fait m'aider, merci.

    Par contre, on va partir d'une hypothèse genre "je ne sais absolument pas coder en java" ....

    J'ai ma page jsp, j'ai ma servlet en .java (ou .class) ... heu ; comment je relis les 2 ... ?

    Je m'explique : ce que je faisais se basait sur du code récupéré, et ds la jsp, il y a cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><%=custom.cads.imports.UpdateMatricules.updateMatricules(lignes)%></p>
    qui appelle bien le méthode updateMatricules() que j'ai sur le serveur.
    Si je me base sur le même principe, que faut-il que je passe en paramètre à la servlet ?
    Ou y a-t-il un autre moyen ?

  6. #6
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    tu appelles ta servlet au niveau de ton formulaire dans ta page jsp.

    un peu comme cela :
    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
     
    	<!-- Choix du fichier pour upload -->
    	<form method="Post" action="TaServlet" name="chooseUplFile" enctype="multipart/form-data"> 
      	<table width="70%" border="0" align="center" class="table">
      	<tr>
    		<td align="left">Le Fichier</td>
    		<td align="left"><input class="formInputText" type="file" name="inputFileName" id="inputFileName" value="<%=inputFileName%>" size="50"></td>
    	 </tr>
     
       	 <!-- Bouton de validation -->
    	<tr><td colspan="2">&nbsp;</td></tr>
    	<tr><td align="center" colspan="2"><input class="formSubmitButton" type="submit"  value="Valider"></td></tr>
     
        </table>
    	</form>
    c'est à adapter en fonction de ton besoin.

    Par contre la servlet doit être déclaré au le fichier Web.xml de ton projet

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Merci pour le code.

    Dernière question : peut-on effectuer ce traitement dans une seconde jsp ?
    Exemple : 1 première page html qui permet de sélectionner le fichier à uploader, qui renvoie dans la méthode post du form vers une seconde jsp, qui possède tt le code ?
    Je demande parce que j'ai trouvé plein d'exemple sur le net qui semblent fonctionner de cette manière, mais même en recopiant le code des jsp, chez moi, ça ne marche pas ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <%
    if (ServletFileUpload.isMultipartContent(request)){
      ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory());
      List fileItemsList = servletFileUpload.parseRequest(request);
     
      String optionalFileName = "";
      FileItem fileItem = null;
     
      Iterator it = fileItemsList.iterator();
      while (it.hasNext()){
        FileItem fileItemTemp = (FileItem)it.next();
        if (fileItemTemp.isFormField()){...}
    %>
    La variable "resquest" est toujours null ...

  8. #8
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    heu ... je sais pas .. c'est pas très propre comme principe .. mieux vaut passer par une servlet qui sert à cela car c'est fait coté serveur.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Merci pour l'aide. Ça ne marche pas tout à fait comme je veux, mais ça marche quand même ...

    Bonne journée.

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

Discussions similaires

  1. Lire un fichier PDF sur serveur local depuis une page Web
    Par sinifer dans le forum Langages serveur
    Réponses: 1
    Dernier message: 12/08/2013, 17h36
  2. Réponses: 3
    Dernier message: 10/03/2009, 10h07
  3. Réponses: 4
    Dernier message: 09/01/2008, 19h20
  4. lire un fichier à travers le réseau local
    Par diamonds dans le forum Entrée/Sortie
    Réponses: 18
    Dernier message: 05/12/2006, 20h42

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