# Java > Dveloppement Web en Java > Servlets/JSP >  [J2EE][SERVLET] Rcuprer un champ <input type='file'>

## zev

Bonjour.

J'ai toutes sorte de pb pour mettre (="uploader"  ::): ) un fichier d'un client vers un serveur. 
Pour commencer, comment rcuprer dans ma servlet le champ <input type="file"> de ma JSP ?   ::oops::  

Merci.

----------


## fabszn

Hello,

Tu peux utiliser l'API FileUpload du projet Jakarta!

FileUpload

 ::D:

----------


## zev

Merci  ::):  a marche.Voil le code :

Dans la JSP :


```

```

et dans la servlet :
Pb: le streaming ne marche pas. qqun voit-il pourquoi ?


```

```

----------


## zev

J'essaie d'en faire un sujet bien rdig pour la FAQ  ::): 
Si qqun qui s'y connait bien voulait bien checker a et commenter.
En particulier comment traiter proprement le cas ou  le ficher envoy est trop gros,etc...

D'abord, avec enctype="multipart/form-data", la mthode POST ne marche pas. Pour envoyer les paramtres, il faut soit les envoyer par un GET, soit ne pas prciser method et les rcuprer grce au parseRequest.

JSP : 

```

```

La liste obtenue par parseRequest contient 2 types de champs: les parametres habituellement envoys par POST et les fichiers.
Pour les fichiers, 2 traitements possibles: envoyer le fichier d'un coup ou le streaming, selon la taille.

Servlet:

```

```

----------


## ShinJava

Re salut,

Alors j'ai bien regard le code, il est tres instructif mais j'ai une question, ou est-ce que tu defini le repertoire d'arriv du fichier ?
Je ne le trouve pas...

Merci
++
ShinJava

----------


## zev

Ici :


```
String yourTempDirectory = "/home/temp/"; // un répertoire ou tomcat a le droit d'écrire
```

Je sais pas pourquoi ils appellent a un repertoire temporaire, pour moi il est definitif: c'est le repertoire ou j'enregistre le fichier selectionn.
Peut etre pour checker le fichier avant de le deplacer ailleurs.
enfin de toutes manieres c la qu'il sera telecharg.

----------


## ShinJava

Ok je vois.
Apparement le repertoire temporaire doit servir pour les gros fichiers.
Je crois que c'est ici que tout ce passe :



```

```

Si j'ai d'autres questions je reviens ici  ::):  Merci.

++
ShinJava

----------


## Mascotte

Bonjour, j'ai repris le code hier pour faire un upload et je me suis aperue qu'il utilisait des mthodes deprecated. J'ai donc modifi le code



```

```

Je voulais aussi signaler qu'il fallait penser  prendre la dpendance sur le site d'Apache : common.io

Bon courage au suivant  :;):

----------


## ptr83

> Bon courage au suivant


Merci c'est moi  ::): .

En fait je n'ai qu'une petite rectification  proposer, le code ci-dessus fonctionne trs bien (mme le streaming contrairement  ce que les commentaires annoncent -apparemment en tout cas- ) sur Firefox. Mais sur IE (7 chez moi) cela ne fonctionnait pas du tout.
J'ai trouv pourquoi : la fonction item.getName(); sous FF renvoie le nom du fichier (test.txt par exemple) alors que sous IE elle renvoie le path tout entier (C:\temp\test.txt).

J'ai ajout ces deux petites lignes :



```

```

Juste aprs celle-ci :



```
String fileName = item.getName();
```

Comme le nom d'un fichier ne peut contenir un \ je pense que cela rsoud le problme. Cela fonctionne aussi sous IE7 chez moi en tout cas...

Tout le monde est sous FF ici  ::mouarf::  ? (je ne m'en suis pas non plus rendu compte desuite, juste a la fin de mes tests car mon application doit tre compatible FF et IE...).

----------


## Mascotte

Merci car mes users sont, eux, sous IE !!!

----------


## rousseso

Bonjour,

Je suis nouvelle dans les FileUpLoad.
alors petit pb qui me bloque pas mal.

situation : utilisation d'une JSP et d'une servlet
dans la JSP :
       <form name="adminprolog" action="prologservlet" method="post"     
                                                          enctype="multipart/form-data" >
	<p>
	     <input type="file" name="fileBP" size="40"/>
	</p>
	<p>
	     <input type="hidden" name="action" value="validerChargement" />
	     <input type="submit" name="submit" value="Valider"/>
	</p>
	</form>

dans la servlet :
plusieurs action doivent tre possibles... celles-ci sont determines par 
l'input type="hidden"

la servlet rcupre alors le name de l'action et doit excuter le programme correspondant.

seulement voil le pb :
le fait d'ajouter < enctype="multipart/form-data" > - qui est ncessaire pour l'upload de fichier d'aprs ce que j'ai compris - fait que la servlet ne trouve pas l'action "validerChargement"...

quelqu'un aurait-il une ide de la provenance de ce pb ?

d'avance merci

----------


## lem01

Bonjour,

Je suis loin d'etre expert en jsp et j'ai galement besoin de permettre l'upload de fichier depuis une application web.
Votre solution semble vraiment parfaite mais je n'arrive pas a la mettre en place.

Que dois je exactement faire?
Le code que je vois est-ce du code a mettre dans une mthode d'un fichier java, ou alors est ce un script que je met dans un fichier jsp ?
J'ai cru comprendre que je devais tlcharger ceci commons-fileupload-1.2, ce que j'ai fais, j'ai li le jar a mon projet mais je ne parvient pas a faire de rfrence a celui ci.

J'ai mis ce code au dbut de ma JSP, mais j'ai toujours des erreur (DiskFileItemFactory,ServletFileUpload, ...)


```
<%@ page import="org.apache.commons.fileupload.*, java.util.List, java.io.File, java.util.Iterator" %>
```

Que me manque t'il?

Il y a un println au dbut du script, me semble que a ne s'interpretepas en jsp ou en java..

Merci de votre aide!!

----------


## lem01

Ok j'ai pt'etre post un peu rapidement.

J'ai mis ce script dans une methode d'une classe java, les imports semblent
bien fait. J'ai uniquement une erreur  cette ligne:


```
items = upload.parseRequest(req);
```

Le req n'est dfini nulle part avant... Me semble que ce sont les informations provenant du formulaire mais il me semble que pour les rcuperer il faut faire qqchose comme request.getAttribute ...

Je suis un peu ds le flou la  ::):

----------


## ptr83

Tu ne dois pas en faire une classe mais une mhode dans un servlet.

Et le req c'est la request du servlet...

----------


## simohamed10

bonjour

 ::ccool:: 

Svp cette mthode de rcupration est dpasser, donc si vous pouvez proposer une autre sera le bienvenu est merci d'avance.

----------


## m1987

salut,
SVP je suis nouvelle en dev j2ee et je veux savoir quelle est la diffrence entre l'utlisation d'un "tomcat project" et "dynamic web project"
merci d'avance

----------


## Jouryflower

bonjour, je veux Upload un fichier pdf dans une page jsp , j'ai utiliser votre mthode avec l'api

mais je trouve un erreur dans le servlet , l'erreur signifie que req est inconnu




```
List items = upload.parseRequest(req);
```

est ce que vous pouvez dire comment dclarer req ?parce que je n'ai trouv pas son dclaration dans votre code 

est ce qu' il y a d'autre mthode pour Upload? un mthode pou afficher un fichier pdf que l'on upload?

merci

----------

