Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
965 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Uploader un fichier en java

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Uploader un fichier en java

n°1922616
g25453
Posté le 09-09-2009 à 15:35:16  profilanswer
 

Bonjour,  
 
J'aimerais savoir comment uploader un fichier en java.
 
J'ai essayer de mettre le type "file" dans ma jsp mais quand je recupere la valeur de "source"
j'obtient seulement le nom du fichier, et je voudrais avroir le chemin du fichier pour pouvoir le traiter
 
quelqu'un pourrait m'aider svp?
 
voici ma JSP
 
<code>
        <tr>
            <td class="row1" width="50%">
                <span class="gen">Fichier :</span>
            </td>
            <td class="row2" width="50%">
                <input type="file" name="source">
            </td>
        </tr>
</code>
 
 
et mon controlleur
 
 
<code>
 
 String source = (String) request.getParameter("source" );
 System.out.println("source = " + source);
 
</code>
 
 
Merci

mood
Publicité
Posté le 09-09-2009 à 15:35:16  profilanswer
 

n°1922648
cbeyls
Hail to the King, Baby
Posté le 09-09-2009 à 16:01:58  profilanswer
 

Salut g25453,
 
Quand tu envoies un fichier, n'oublie pas que cela doit se faire dans un formulaire avec la méthode POST avec le type d'encodage mutipart/form-data:
 

Code :
  1. <form action="http://serveur.com/requete.jsp" enctype="multipart/form-data" method="post">


 
Ensuite, depuis Java EE 6 (c'est tout récent), il est possible de récupérer les fichiers transmis avec ce type d'encodage sous la forme d'un stream sans avoir recours à des bibliothèques Java externes. Tu dois faire comme ceci:
 

Code :
  1. InputStream input = request.getPart("source" ).getInputStream();


 
où request est un objet de type HttpServletRequest.
 
Ensuite tu peux rediriger ce stream dans un fichier de sortie sur le disque par exemple.


Message édité par cbeyls le 09-09-2009 à 16:02:29
n°1922675
cbeyls
Hail to the King, Baby
Posté le 09-09-2009 à 16:27:57  profilanswer
 

En attendant que Java EE 6 sorte en version finale et soit plus utilisé, tu peux utiliser la bibliothèque Commons fileUpload pour faire la même chose. Voici le code java pour ton exemple:
 

Code :
  1. ServletFileUpload upload = new ServletFileUpload();
  2. FileItemIterator iter = upload.getItemIterator(request);
  3. while (iter.hasNext()) {
  4.    FileItemStream item = iter.next();
  5.    if ("source".equals(item.getFieldName())) {
  6.        InputStream input = item.openStream();
  7.        ...
  8.    }
  9. }


 
où request est un objet de type HttpServletRequest.

n°1923327
g25453
Posté le 11-09-2009 à 15:00:03  profilanswer
 

Bonjour, merci pour ta reponse, mais
request."getPart" n'existe pas, cette methode n'existe pas pour request.
 
 
et pour la 2ème solution iter = upload.getItemIterator(request);
 
le upload est en rouge, d'ou il vient?
 
Merci

n°1923329
g25453
Posté le 11-09-2009 à 15:03:15  profilanswer
 

pour la 2eme solution "le upload", j'ai compris merci

n°1923337
g25453
Posté le 11-09-2009 à 15:35:15  profilanswer
 

InputStream input = item.openStream();
 
est-ce possible de recuperer le chemin du fichier?

n°1923536
cbeyls
Hail to the King, Baby
Posté le 12-09-2009 à 04:36:08  profilanswer
 

Salut g25453,
 
Comme je le disais la première solution n'est possible qu'avec Java EE 6, le nouveau Java qui doit sortir plus tard dans l'année. On peut déjà le télécharger sous forme de Preview. Dans les versions précédentes dont celle que tu utilises certainement, la méthode getPart() n'existe pas encore.
 
Donc je te conseille ma 2e solution qui a l'avantage de fonctionner comme la première (tu récupères un stream), afin que plus tard tu puisses modifier le code pour l'implémenter avec la première solution sans devoir changer la logique.
 
Avec cette solution il n'y a pas de chemin de fichier à récupérer puisque le fichier n'a pas encore été écrit sur le disque: tu lis directement le stream que le client envoie et c'est à toi d'ouvrir un fichier en écriture où tu veux sur le disque pour y écrire le contenu du stream, au cas où tu veux le stocker sur le disque. Avantages: tu peux choisir de ne pas traiter certains fichiers ou tu peux les envoyer ailleurs que sur le disque. Bref tu as le choix de faire ce que tu veux avec les fichiers envoyés par l'utilisateur. item.getName() te renvoie le nom de fichier d'origine, au cas où tu souhaites l'utiliser.

n°1923938
g25453
Posté le 14-09-2009 à 14:49:46  profilanswer
 

merci beaucoup


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Uploader un fichier en java

 

Sujets relatifs
Fichier en cours d'utilisationConnexion a un Wifi en Java ?
Le serveur lance encore un fichier effacé[RESOLU]Limiter le nombre de résultats d'un fichier xml
Generer un fichier sous linux accentue lisible sous dosVBA Excel: Enregistrement d'un fichier csv avec ;
VBA copier contenu feuille excel dans autre fichier + sauvegarder sousProbleme insertion données Fichier Excel
générer un fichier excelJava Applet - Télécharger/Uploader un fichier
Plus de sujets relatifs à : Uploader un fichier en java


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR