Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UPLOAD D'UN FICHIER EN JSP


Information sur la source

Catégorie :JavaServerPage (JSP) Classé sous : upload, fichier, jsp Niveau : Initié Date de création : 19/07/2004 Date de mise à jour : 19/07/2004 14:40:34 Vu / téléchargé: 50 650 / 9 180

Note :
8 / 10 - par 8 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (68)
Ajouter un commentaire et/ou une note

Description

Ce source permet d'uploader un ou des fichier en JSP.
Ce source est fait pour Tomcat  mais je sais pas si vous pouvez l'utiliser dans un autre serveur JSP....
En fait c'est l'implementation de FileUpload de tomcat, et comme j'ai mis du temps pour le trouver, je pense que ca doit etre pareil pour les autre.... :)

Donc si vous voulez en savoir +, il faut aller sur le site de tomcat et voir le "User Guide" .... http://jakarta.apache.org/commons/fileupload/using.html
 

Source

  • Tout est dans le ZIP
Tout est dans le ZIP

Conclusion

C'est tres simple :
Metter le dossier "org" dans le WEB-INF/src
et deposer les jsp ou vous voulez....

Ouvrez la page testupload.html et voila !!!!!

l'appli va enregistrer les fichier dans un dossier "tmp", mais si vous voulez les mettre ailleurs, changer le path dans "testupload.jsp" a la ligne 22.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

19 juillet 2004 14:40:35 :
j'avais oublier de preciser que c'étais pour tomcat et de donner une url pour un tut.

Commentaires et avis

signaler à un administrateur
Commentaire de daveCrocket le 22/07/2004 17:14:45

Salut Mojo9,

je n'arrive pas à faire fonctionner ton projet :o(

y a t il une astuce qui m'aurait échappé ?

signaler à un administrateur
Commentaire de mojo9 le 22/07/2004 17:38:24

Salut daveCrocket,

Peut tu m'en dire plus a ce sujet...
OK, ca ne marche pas chez toi... mais a quel moment...

Peut etre n'y a t'il pas de dossier "tmp" ou ecrire les documents...

Fo m'en dire + alors..

signaler à un administrateur
Commentaire de cdolc le 29/07/2004 11:05:54

j'ai mis le le repertoire org dans WEB-INF/src

mais qd je lance il me dis

Erreur de servlet générée:
C:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\file upload\org\apache\jsp\testupload_jsp.java:6: package org.apache.commons.fileupload does not exist
import org.apache.commons.fileupload.*;


tu sais pourquoi?

signaler à un administrateur
Commentaire de mojo9 le 29/07/2004 11:27:39

je pense que tu as un probleme de complilation.

Essaye de recompliler le projet qui contient les classes org.apache.commons...

Mais a priori, tu devrais pas avoir ce soucis... bizzard...

J'ai beau regarder si il a queleque chose que j'ai oublié mais j'arrive pas a trouver quelque chose qui cloche.

Pour moi, c'est juste un soucis de complilation.

Suprime voir les servlet générés et relance ton tomcat.

Sinon, je peut pas t'en dire +....

signaler à un administrateur
Commentaire de cdolc le 29/07/2004 13:43:19

ennow ca marche mais le probleme est que lorsque je lui met l image et le fichier il mle dit qu'il ne trouve pas le chemin specifie?

tu as eu le probleme

ps: je fais tourner le projet en local

signaler à un administrateur
Commentaire de daveCrocket le 30/07/2004 10:57:31

Salut mojo9,

tu marques :"Metter le dossier "org" dans le WEB-INF/src", mais c'est pas plutôt dans  WEB-INF/classes, non ?


je n'arrive pas à faire fonctionner ton projet :o(

je lance TOMCAT, j'ouvre la page "testupload.html",
Je tappe un nom dans le premier champ, je sélectionne une image dans le deuxième (jpeg ou bmp), et je sélectionne un fichier quelconque dans le dernier champ.
et quand j'appuie sur le bouton, j'ai cette erreur :

--------------------------------------------------------------

type Rapport d'exception

message

description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

exception

org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:346)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)


cause mère

java.lang.NullPointerException
org.apache.commons.fileupload.DefaultFileItem.write(DefaultFileItem.java:442)
org.apache.jsp.testupload_jsp._jspService(testupload_jsp.java:70)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)


note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.0.25.
---------------------------------------------------------------

Je dû rater un épisode :o(

signaler à un administrateur
Commentaire de mojo9 le 30/07/2004 11:09:59

Je regarde ce qui cloche et je mettrais un correctif bientot

ok?

En tout cas désolé pour la gene...

signaler à un administrateur
Commentaire de daveCrocket le 30/07/2004 15:02:53

ca vient peut-être de chez moi !

je suis débutant,  donc j'ai dû oublier qq chose ...

signaler à un administrateur
Commentaire de poucy le 25/08/2004 09:54:52

L'exemple fonctionne bien. J'ai mis dans le repertoire common.lib de tomcat le fichier 'commons-fileupload-1.0.jar'

Ainsi, il suffit de mettre dans le repertoire webbapps/[nom_repertoire] les fichiers testupload.html, testupload.jsp et msg.jsp, et on peut tester.  Ne pas oublier de créer un repertoire 'tmp'.

signaler à un administrateur
Commentaire de caveline le 26/08/2004 16:44:52

Salut cdolc,
apparemment tu t'es trompé de chemin, tu as du mettre le répertoire "org" dans "WEB-INF/src/file uplood" au lieu de la mettre directement dans "WEB-INF/src/". Essai donc de réparer cette erreur et dit nous en des nouvelles après avoir redémarrer ton serveur tomcat et avoir esseyer à nouveau.

L'erreur vient peut-être du fichier ZIP qui contient un répertoire "file upload", peut-être une modification du fichier à faire pour éviter cette petite mésaventure à d'autres utilisateurs.

A+

signaler à un administrateur
Commentaire de mojo9 le 26/08/2004 17:55:57

OK...
Bon je m'excuse de ne pas avoir donné de correctif rapidement mais le problème ne vient pas de la source...

Récapitulatif :
le dossier 'org' qui contient un dossier 'apache'...'commons'...'fileupload' et des '*.java' est a mettre impérativement dans le 'WEB-INF/src' de votre application. sinon...oulala !!!

les '*.jsp' sont a mettre dans le 'www' et comme le rappelle à juste titre poucy... ne pas oublié de créer un répertoire 'tmp'

Sinon je n'ai rencontré aucun pb a utilisé cette source puisque elle est utilisé environ 300 x par jour.

@ + et n'hésiter pas a donner de critiques... en meme temps moi j'ai fait que recopier ce que j'ai trouver sur le site de apache... mais on sait jamais...

signaler à un administrateur
Commentaire de bouezmarni le 27/09/2004 20:29:06

Bravo,
ça marche trés bien.
Merci

signaler à un administrateur
Commentaire de mojo9 le 06/10/2004 14:53:30

merci du message !!
Enfin quelqu'un qui arrive a le faire tourner correctement (lol) ca fait plaisir...

N'hésiter pas a laisser une note pour voir, et j'essayerais d'amélioré le tout!!

@+ mojo9...

signaler à un administrateur
Commentaire de ChuiOuf le 08/12/2004 09:59:09

Bonjour tout le monde,

j'utilise actuellement JBuilderX et Tomcat 4.1.
J'ai bien suivie toutes les instructions et ya tout qui compile. Mon probleme vient du fait que je veux uploader, je n'ai pas les droits pour ecrire dans /tmp.
J'ai bien creer le repertoire. Voici l'erreur generee :

--------------------------------------------------------------------------------

type Rapport d''état

message D:\Sauvegarde\jbproject\JSPSimpleTutorial\JSPWebModule\tmp (Accès refusé)

description La ressource demandée (D:\Sauvegarde\jbproject\JSPSimpleTutorial\JSPWebModule\tmp (Accès refusé)) n'est pas disponible.


Si j'ai mal compris l'erreur, j'en suis bien desole mais g besoin d'aide. J'ai cherche un peu dans la configuration de Tomcat sans grand succes

merci pour vos reponses.

signaler à un administrateur
Commentaire de 2ny le 16/12/2004 16:45:43

Salut,
Concernant le probleme d'accés, dans la ligne de code:

File savedFile = new File(pathFileServer, fullFile.getName());

Si tu oublies le param fullFile.getName() cela provoque la fameuse erreur d'acces DONC PARAM A NE PAS OUBLIER !!!


En tout cas le code marche ET JE TE REMERCIE mojo9! c bien cool. Par contre juste un truc :
J'ai vraiment du mal a savoir exactement ce qu'il fait.

voila voila
     - 2ny -



PS : En ce qui concerne des lib je les ai directement pris sur le site de jakarta comme ca je n'ai pas eu besoin de les recompiler!

signaler à un administrateur
Commentaire de Mprog le 07/04/2005 21:03:29

bonjour
il serait interressant de mettre un control des données.
Afin d'eviter les erreurs quand on met qu'un seul fichier dans un des champs testupload.html.

<%@ page import="org.apache.commons.fileupload.*, java.util.List, java.io.File, java.util.Iterator" %>
<%
boolean isMultipart = FileUpload.isMultipartContent(request);
if(!isMultipart){
request.setAttribute("msg", "Request was not multipart!");
request.getRequestDispatcher("msg.jsp").forward(request, response);
return;
}

DiskFileUpload upload = new DiskFileUpload();
List items = upload.parseRequest(request);
Iterator itr = items.iterator();

while(itr.hasNext()){
FileItem item = (FileItem) itr.next();
if(item.isFormField()) {
String fieldName = item.getFieldName();
if(fieldName.equals("name"))
request.setAttribute("msg", "Thank You: " + item.getString());
} else {
if (!item.getName().equals("")){
File fullFile = new File(item.getName());
File savedFile = new File(getServletContext().getRealPath("/")+"/tmp/", fullFile.getName());
item.write(savedFile);

}
}
}

request.getRequestDispatcher("msg.jsp").forward(request, response);
%>


voilà
bye

ps: j'ais passé du temp à comprendre pouquois votre exemple ne marchais pas xD (je developpe sur un vieux container jswdk 1.0.1, suffit de lui donner les bon packages et la bonne jdk)

signaler à un administrateur
Commentaire de brunosite le 17/08/2005 22:34:30

ce serait possible de passer par un servlet au lieu d'un jsp?

merci

signaler à un administrateur
Commentaire de Mprog le 20/08/2005 15:14:41

En théorie il est tout à fait possible d'utiliser un servlet au lieu d'un jsp car le serveur java comverti tout jsp en servlet avant l'execution.

le probleme que j'ai rencontré est de trouver le path du serveur(getServletContext().getRealPath("/")) ce qui est facile en jsp mais en servlet toutes les fonctions que je connais sont interdite par le compilateur ... (donc c'est un jsp qui me l'envoi xD)

sinon le reste c'est du copier coller en mettant une variable String pour les messages (à la place de request.setAttribute ) ou directement des print.
Au pire dans le repertoire temporaire du serveur tu trouvera la servlet issu de ton jsp et tu voi comment il le traduit ...

voilà
bonne prog @++

signaler à un administrateur
Commentaire de vespucci le 31/08/2005 15:37:07

Super tu m'as bien dépanné pour mon stage!!! ca marche nickel!!!

signaler à un administrateur
Commentaire de thewolof1 le 22/09/2005 15:37:26

pour le path du serveur, il y a un exemple qui offre une alternative:
http://www.theserverside.com/articles/content/HttpClient_FileUpload/article.html
Ainsi au lieu de getServletContext():

File tempFileRef  = new File(fi.getName());
File fNew = new File(application.getRealPath("/"),tempFileRef.getName());

signaler à un administrateur
Commentaire de mbeaupoil le 27/09/2005 14:41:09

Je ne comprends pas. J'ai fait absolment tout ce qui est écrit au dessus (dézipper le fichier et le mettre dans WEB-INF) mais ca ne marche toujours pas : voila mon erreur

Une erreur s'est produite à la ligne: 2 dans le fichier jsp: /test/testupload.jsp
Erreur de servlet générée:
FileUpload cannot be resolved

Une erreur s'est produite à la ligne: 2 dans le fichier jsp: /test/testupload.jsp
Erreur de servlet générée:
DiskFileUpload cannot be resolved or is not a type
.....
Apparamment il ne trouve pas les fichiers mais j'ai essayé de les mettre à d'autres endroits sans succès !
Ce code me serait très utile donc si quelqu'un sait quel est le problème, cela me serait d'une grande aide. Merci

signaler à un administrateur
Commentaire de mojo9 le 27/09/2005 14:52:28

tu as bien mis le dossier "org" avec tout ce qu'il y a dedans dans le web-inf/src ?
As tu bien recompilé tes javas ?

Si ils se trouvent bien au bon endroit, les jsp vont retrouver tes java...

Courage va, hesite pas en ca de pb... ;)

signaler à un administrateur
Commentaire de mbeaupoil le 27/09/2005 15:32:49

En fait, j'ai bien mis les .java la où il faut mais j'ai des problèmes pour compiler. J'utilise JBuilder depuis peu et là il me dit qu'il y a des problèmes au niveau de la déclaration du package. Je ne sais pas si ca vient de Jbuilder ou d'autre chose.
Est ce que tu sais utiliser JBuilder ?

signaler à un administrateur
Commentaire de mbeaupoil le 27/09/2005 16:11:59

Bon j'ai réussi a compiler mais où faut il mettre les .class ?
J'ai essayé en les laissant au même endroit que les sources et j'obtiens toujours la même erreur !

signaler à un administrateur
Commentaire de mojo9 le 27/09/2005 16:27:49

Normalement les .class tu les met dans le repertoire "classes" qui doit se trouver dans "Web-inf".
De meme que tu as dans le "src" une arbo "org/apache/fileupload......"
tu doit avoir dans classes la meme arborescence : "org/apache/fileupload......"

Mais je connais pas du tt JBuilder, j'utilise Eclipse, mais tu doit surement avoir des proprieté pour ton projet qui reference l'endroit ou tu ranges tes classes...

Courage, robustesse...

signaler à un administrateur
Commentaire de mbeaupoil le 29/09/2005 18:00:40

Merci, ce programme est vraiment top.
Je suis revenu à Eclipse que je connais mieux (mais qui malheureusement prend un peu plus de ressources) et j'ai donc résolu mes problèmes de compilation et maintenant tout fonctionne parfaitement. Merci

signaler à un administrateur
Commentaire de ademus le 13/10/2005 16:21:23

J aurais aimé savoir si ce module permet de choisir plusieurs fichiers à la fois avant envoi dans la fenetre de l explorer de fichiers (c a d, la fenêtre qui apparait lorsque on clique sur parcourir)?

Sinon y a ça aussi : http://the-stickman.com/web-development/javascript/upload-multiple-files-with-a-single-file-element/

Merci par avance

signaler à un administrateur
Commentaire de mojo9 le 14/10/2005 14:23:35

Désolé Ademus, mais je crois fort que non, mais ton ecolution que tu a s trouver est forte interessante... je vais y jetter un oeil dés que j'ai un peut de temps...

Merci pour l'idée ;)

signaler à un administrateur
Commentaire de kgadhi le 22/10/2005 17:35:16

Bonjour,
J'ai récupéré votre code, j'ai copié les fichiers comme c'etait indiqué la haut mais rien ne marche.
il m'affiche le message d'erreurs:

org.apache.jasper.JasperException: Impossible de compiler la classe pour la JSP

Erreur de servlet générée:
C:\Documents and Settings\karim.TEST\.netbeans\4.0\jakarta-tomcat-5.0.28_base\work\Catalina\localhost\WebTest\org\apache\jsp\testupload_jsp.java:6: package org.apache.commons.fileupload does not exist
import org.apache.commons.fileupload.*;
^


Une erreur s'est produite à la ligne: 2 dans le fichier jsp: /testupload.jsp
Erreur de servlet générée:
C:\Documents and Settings\karim.TEST\.netbeans\4.0\jakarta-tomcat-5.0.28_base\work\Catalina\localhost\WebTest\org\apache\jsp\testupload_jsp.java:49: cannot find symbol
symbol  : variable FileUpload
location: class org.apache.jsp.testupload_jsp
boolean isMultipart = FileUpload.isMultipartContent(request);
                      ^


Une erreur s'est produite à la ligne: 2 dans le fichier jsp: /testupload.jsp
Erreur de servlet générée:
C:\Documents and Settings\karim.TEST\.netbeans\4.0\jakarta-tomcat-5.0.28_base\work\Catalina\localhost\WebTest\org\apache\jsp\testupload_jsp.java:56: cannot find symbol
symbol  : class DiskFileUpload
location: class org.apache.jsp.testupload_jsp
DiskFileUpload upload = new DiskFileUpload();
^


Une erreur s'est produite à la ligne: 2 dans le fichier jsp: /testupload.jsp
Erreur de servlet générée:
C:\Documents and Settings\karim.TEST\.netbeans\4.0\jakarta-tomcat-5.0.28_base\work\Catalina\localhost\WebTest\org\apache\jsp\testupload_jsp.java:56: cannot find symbol
symbol  : class DiskFileUpload
location: class org.apache.jsp.testupload_jsp
DiskFileUpload upload = new DiskFileUpload();
                            ^


Une erreur s'est produite à la ligne: 2 dans le fichier jsp: /testupload.jsp
Erreur de servlet générée:
C:\Documents and Settings\karim.TEST\.netbeans\4.0\jakarta-tomcat-5.0.28_base\work\Catalina\localhost\WebTest\org\apache\jsp\testupload_jsp.java:61: cannot find symbol
symbol  : class FileItem
location: class org.apache.jsp.testupload_jsp
FileItem item = (FileItem) itr.next();
^


Une erreur s'est produite à la ligne: 2 dans le fichier jsp: /testupload.jsp
Erreur de servlet générée:
C:\Documents and Settings\karim.TEST\.netbeans\4.0\jakarta-tomcat-5.0.28_base\work\Catalina\localhost\WebTest\org\apache\jsp\testupload_jsp.java:61: cannot find symbol
symbol  : class FileItem
location: class org.apache.jsp.testupload_jsp
FileItem item = (FileItem) itr.next();
                 ^
6 errors

est ce que vous pouvez m'aider svp car je suis un peu perdu
Et merci d'avance

signaler à un administrateur
Commentaire de kgadhi le 22/10/2005 17:37:57

J'ai oublié de préciser que je développe sous NetBeans

Merci d'avance

signaler à un administrateur
Commentaire de Mprog le 23/10/2005 15:24:34

je croi qu'il te manque commons-fileupload-1.0.jar

tu le trouveras sur http://jakarta.apache.org/commons/fileupload/

voilà

bonne chance @++

signaler à un administrateur
Commentaire de mojo9 le 24/10/2005 09:53:22

Ou alors tu n'as pas compilé les java fournis avec...
Sinon c'est normal que cela t'arrive...

Courage !!

signaler à un administrateur
Commentaire de simloub le 07/12/2005 11:18:54

Bonjour, j'ai beau avoir lu et relu le forum, fait tout ce que vous dites, j'ai toujours l'erreur suivante :

type Rapport d'exception

message

description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

exception

javax.servlet.ServletException: org/apache/commons/io/output/DeferredFileOutputStream
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.testupload_jsp._jspService(testupload_jsp.java:82)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


cause mère

java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
org.apache.commons.fileupload.DefaultFileItemFactory.createItem(DefaultFileItemFactory.java:102)
org.apache.commons.fileupload.FileUploadBase.createItem(FileUploadBase.java:500)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:367)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:268)
org.apache.jsp.testupload_jsp._jspService(testupload_jsp.java:58)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.0.28.

Merci pour votre aide !

signaler à un administrateur
Commentaire de tarzent le 04/01/2006 17:05:39

J'avais la même erreur que toi.
Je viens de remarquer que dans le package 1.1 de commons.fileupload de apache il n'y a pas la classe DeferredFileOutputStream... Oubli d'apache?
Donc soit tu prends la version précédente, soit tu tentes d'intégrer l'ancienne classe DeferredFileOutputStream dans le nouveau package

signaler à un administrateur
Commentaire de tarzent le 04/01/2006 17:19:35

Ok, la classe est dans le package org.apache.commons.io... donc on oublie ce que j'ai dit au dessus.
Rajoute donc ce nouveau package et ça passe.

signaler à un administrateur
Commentaire de dernoncg le 14/03/2006 22:47:36

"""""la classe est dans le package org.apache.commons.io... donc on oublie ce que j'ai dit au dessus.
Rajoute donc ce nouveau package et ça passe."""""

Tu peux me dire où je peux trouver ce package????

signaler à un administrateur
Commentaire de mojo9 le 16/03/2006 00:35:59

Tout est dans le zip Dernongg...

Tu rajoute les classe dans le src et le tour est joué !

Courage !

Broyyom

signaler à un administrateur
Commentaire de kedare le 24/03/2006 23:42:37

impossible de le faire marcher , je sait pas quoi faire du dossier org :/
j'ai essayer dans
common/lib/ , rien
WEB-INF/lib/ rien
WEB-INF/src/ rien
WEB-INF/classes/ rien
il me met toujour son  :xxxxx cannot be resolved
bref j'en fait quoi du ORG ? :/
merci

signaler à un administrateur
Commentaire de c___moi le 10/04/2006 13:50:33

bonjour, je suis tombé ici et j'ai eu le meme probleme que toi :

tu dois ajouter à tomcat la librairie COS:
http://www.servlets.com/cos/

j'ai trouvé tout seul et j'ai mis du temps ... ca devrait servir à d'autres !

signaler à un administrateur
Commentaire de skybane le 18/05/2006 16:44:53

Bonjour,

Cette source d'upload de fichiers date d'il y a 2 ans, mais je tente quand même une question.

boolean isMultipart = FileUpload.isMultipartContent(request);

Je ne sais pas quel est le phénomène mais isMultipart est constamment false.
pourtant je spécifie bien enctype="multipart/form-data" dans ma Form.


Si quelqu'un à une idée, Merci d'avance


signaler à un administrateur
Commentaire de skybane le 18/05/2006 19:20:34

c'est bon j'ai trouvé la solution au problème.

Merci pour le code source.  

signaler à un administrateur
Commentaire de 1cppfrance le 18/07/2006 22:44:22

tu pourrait la mettre ...

signaler à un administrateur
Commentaire de hinanui le 18/08/2006 16:48:35

J'avais un problème au début de copie de fichier : "The system cannot find the path specified", c'est parce que je n'avais pas encore créé le répertoire "tmp" dans mon projet! hihi!

Sinon, il faut bien mettre tout les fichiers du répertoire org dans WEB-INF/src/org/

C'est génial! Ça marche maintenant comme sur des roulettes! Merci beaucoup!!

signaler à un administrateur
Commentaire de amidon le 21/08/2006 09:23:54

Alléluia !!!

Merci pour cette source qui tombe ô combien à point...

Encore merci et bonne continuation !

signaler à un administrateur
Commentaire de zinentmazirt le 13/10/2006 01:05:45

Merci ça m'a vraiment aidé mais je ne sais pas comment récuperer les autres param du form

signaler à un administrateur
Commentaire de skybane le 13/10/2006 18:07:37

Bonjour,

Voilà un morceau de code qui devrait t'aider à récupérer un ou des autres paramètres :
(Dans le code ci-dessous je récupère un seul paramètre en plus du fichier)

<code>

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

upload.setSizeMax(1000000);

//Parse the request
List  items=null;
try {
  items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}

//Process the uploaded items
Iterator iter = items.iterator();

String leParametre=null;
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
     if (item.isFormField()){
if (item.getFieldName().equalsIgnoreCase("nomDuParametre")){
leParametre= item.getString();
        }
//etc.....

//et Pour copier le fichier il faudra écrire
File uploadedFile = new File("chemin et nom du nouveau fichier");
try {item.write(uploadedFile);
} catch (Exception e) {
}
//Etc.....
</code>

Voilà

signaler à un administrateur
Commentaire de zinentmazirt le 14/10/2006 00:17:03

Merci skybane,

Je vais essayer cette solution, c cool

signaler à un administrateur
Commentaire de _Syl_ le 15/11/2006 15:07:34

Bonjour à tous

Voilà mon problème
Malgré le
import="org.apache.commons.fileupload.*,..."
en prmière ligne du fichier "testupload.jsp"
J'ai un message d'erreur me disant que les types FileUpload, DiskFileUpload, FileItem ne peuvent pas être résolus :

Une erreur s'est produite à la ligne: 2 dans le fichier jsp: /testupload.jsp
Erreur de servlet générée:
FileUpload cannot be resolved

Une erreur s'est produite à la ligne: 2 dans le fichier jsp: /testupload.jsp
Erreur de servlet générée:
DiskFileUpload cannot be resolved to a type

etc.

Si quelqu'un a une idée, je suis preneur !
Merci d'avance

Config
Serveur tomcat 5.5.2
org dans le WEB-INF/src ok
commons-fileupload-1.1.1.jar dans /common/lib
bref, à priori ça devrait marcher

signaler à un administrateur
Commentaire de _Syl_ le 15/11/2006 15:09:12

désolé pour le double post (conexion en carton=lag à la con :p)
la cause mère :
Impossible de compiler la classe pour la JSP

signaler à un administrateur
Commentaire de _Syl_ le 15/11/2006 17:23:43

Re
Bon il fallait mettre commons-fileupload-1.1.1.jar dans common/endorsed
Cela dit j'ai maintenant un probleme avec jasper

org.apache.jasper.JasperException: Exception in JSP: /testupload.jsp:13

10: out.println(phrases[i]);
11: }
12: //HttpServletRequest request = new HttpServletRequest();
13: boolean isMultipart = FileUpload.isMultipartContent(request);
14: if(!isMultipart)
15: {
16: request.setAttribute("msg", "Request was not multipart!");


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


cause mère

javax.servlet.ServletException: javax/servlet/http/HttpServletRequest
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:843)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:776)
org.apache.jsp.testupload_jsp._jspService(testupload_jsp.java:98)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


cause mère

java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
org.apache.commons.fileupload.FileUploadBase.isMultipartContent(FileUploadBase.java:96)
org.apache.jsp.testupload_jsp._jspService(testupload_jsp.java:60)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


Si quelqu'un a une idée je prends !
Merci d'avance
Syl'

signaler à un administrateur
Commentaire de ubudogg le 07/12/2006 20:06:07

Le code fonctionne donc je mets 10 : j'ai réussi à uploader 2 images sur mon serveur local.

Par contre j'ai eu quelques difficultés pour tout faire fonctionner (notamment avec l'histoire du package fileupload). Voici donc la procédure que j'ai utilisé sous Netbeans 5.0 si ça peut aider quelqu'un :
- creer un nouveau projet de type "Web Application" (laissez les valeurs par défaut, notamment pour les frameworks)
- clic droit sur votre projet, new JSP et ensuite new HTML (valuers par défaut toujours) afin de créer les 2 fichiers .jsp et la page .html nécessaires (en leur donnant leur nom indiqué dans le .zip)
- copiez coller leur code respectif
- clic droit sur votre projet, new package, donnez lui le nom "org.apache.commons.fileupload" (l'arborescence de dossiers va se créer toute seule)
- copier tous les fichiers.java du dossier org contenu dans le zip dans "dossier de votre projet/src/java/org/apache/commons/fileupload"
- créer le dossier tmp dans "dossier de votre projet/build/web" (créer les dossiers si nécessaire)
- lancer votre projet avec F6
- cliquer sur "testupload.html" etc...

Tout fonctionne :) vous avez uploadé vos 2 fichiers dans le répertoire "tmp" de votre serveur local.

Si jamais vous avez des difficultés à comprendre ce que j'ai écrit n'hésitez pas.

signaler à un administrateur
Commentaire de boosy le 20/02/2007 12:13:55

n'y aurait-il pas un probleme de compatibilité avec la version j2ee 1.4 de Java ??
je viens toutjuste de changer de version, et il m'est dorénavant impossible d'uploader un fichier.

Merci de votre attention.

signaler à un administrateur
Commentaire de soukak le 22/04/2007 13:38:27

salut ubudogg,

j'ai fais exactement ce que tu as ecrit, c tres clair, le seul pb, qd j'appuie sur F6, je lance ensuite la page.html j'ajoute les fichier, qd je met submit il me renvoi le code de la page testupload.jsp.

Alors je travail ac netBeans v5.5 et tomcat 5.5.17, j'ai importé tte les librairies necessaires, est ce que tu aurais une petite idée d'ou viendrai le pb ?

Merci

signaler à un administrateur
Commentaire de soukak le 22/04/2007 13:44:18

je retire ce que j'ai dis, je n'avais pas chargé les deux fichiers, j'avais qu'un fichier html, j'ai reessayé en mettant 2 fichiers, ca marche impec. :-)

super, ca fait vmt plaisir

signaler à un administrateur
Commentaire de cancrat le 07/05/2007 14:44:00

Bonjour mojo9 et les autres développeurs,

Tout d'abord merci beaucoup pour ce projet, rien de tel qu'un bon exemple pour comprendre! :-)

Dans un premier temps, j'ai testé le code tel quel, tout fonctionne. Et puis je l'ai repris et modifié à des fins personnelles et là, j'ai un petit soucis. J'ai le message suivant lorsque j'exécute ma page:

C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\test_requetes\tmp (Accès refusé)

Mais le fichier que je souhaite télécharger et bel et bien enregistré dans mon dossier temporaire.

Est-ce que tu aurais une idée de la raison?

ton projet commence à dater, j'espère que tu auras tout de même une piste à me suggérer.

Encore merci pour le projet

signaler à un administrateur
Commentaire de pmbala le 16/04/2008 13:23:08

une solution simple serait de lister les fichiers de ton repertoire et les afficher sous forme de liens hypertexte,pour permettre à l'utilisateur de telecharger.Tu peux même faire des filtres(sur le nom,type,ou ce que tu veux...du fichier en fonction des profils ou des vues à afficher.
Si c pas clair et si ça interesse qlq1 je balance le code...lol

signaler à un administrateur
Commentaire de zekabyle le 27/04/2008 23:09:22

en effet PMBALA, je veux bien que tu balances le code

merci

signaler à un administrateur
Commentaire de pmbala le 28/04/2008 10:51:38

Ok je balance le petit truc,j'espère que ça aidera qlq1 un jour...lol
------------------------------------------------------------

// package necessaires (en ajouter au besoin)
<%@ page language="java" import="java.io.*,java.util.*" %>

// le code est clair,on met les fichiers de rep dans une liste
<%! String [] liste; int i;
File rep = new File("C:\\dev\\Tomcat5_5webapps\\intranet\\tmp"); %>

  <%liste = rep.list();%>
  <% for(i= 0; i < liste.length;i++)
{%>
// affiche les fichiers qui commencent par "xxxx"
  <%if(liste[i].startsWith("xxxx")==true )
  { %>
   // et pour chaque fichier transforme le nom en lien hypertexte
     <a href="tmp/<%=liste[i].substring(0,liste[i].length())%>" type="file" target="_blank"><%=liste[i].substring(0,liste[i].length())%></a>
<br>
<%}%>
<%}%>
----------------------------------------------------------------
Voilà c'est une petite routine qui marche et qui m'a aidé dans un projet...

signaler à un administrateur
Commentaire de zekabyle le 28/04/2008 23:45:39

c'est joli ce que tu as fait PMBALA, je suis sûr que ça va aider plus d'une personne :)

ça m'aide déjà, ça fait déjà une personne ^^

signaler à un administrateur
Commentaire de gazellehba le 16/04/2009 12:24:20

merci , c'est trés joli , se projet m'aide aussi .

signaler à un administrateur
Commentaire de ba3abbad le 26/04/2009 15:56:33

bonjour tout le monde j'ai testé le le code mais le probleme que je rencontre c est que apres avoir valider je tombe sur la page d erreur suivante sachant que mes fichiers sont configurés de la maniere suivane:
WebContent
META-INF
WEB-INF
   lib
     commons-fileupload-1.1.jar
     cos.jar
   src
     org
       apache
        common
          fileupload
testupload
testupload.html
msg.jsp


voici le message d erreur:

org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


cause m�re

javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.testupload_jsp._jspService(testupload_jsp.java:97)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


cause m�re

java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
org.apache.commons.fileupload.DefaultFileItemFactory.createItem(DefaultFileItemFactory.java:102)
org.apache.commons.fileupload.FileUploadBase.createItem(FileUploadBase.java:500)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:367)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:268)
org.apache.jsp.testupload_jsp._jspService(testupload_jsp.java:69)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


cause m�re

java.lang.ClassNotFoundException: org.apache.commons.io.output.DeferredFileOutputStream
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
java.lang.ClassLoader.loadClassInternal(Unknown Source)
org.apache.commons.fileupload.DefaultFileItemFactory.createItem(DefaultFileItemFactory.java:102)
org.apache.commons.fileupload.FileUploadBase.createItem(FileUploadBase.java:500)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:367)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:268)
org.apache.jsp.testupload_jsp._jspService(testupload_jsp.java:69)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

merci d avance
j ai le meme probleme avec les jar 1.2.1 de fileupload

signaler à un administrateur
Commentaire de ba3abbad le 26/04/2009 16:53:01

resalut
j ai teste avec le jar 1.0 de fileupload et j ai plus ce message d erreur mais un autre est apparu ( est ce qu on peut me dire le chemin exact ou creer le dossier temp) :





org.apache.jasper.JasperException: An exception occurred processing JSP page /testupload.jsp at line 23

20: } else {
21: File fullFile = new File(item.getName());
22: File savedFile = new File(getServletContext().getRealPath("/")+"/tmp/", fullFile.getName());
23: item.write(savedFile);
24: }
25: }
26:


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


cause m�re

java.lang.NullPointerException
org.apache.commons.fileupload.DefaultFileItem.write(DefaultFileItem.java:442)
org.apache.jsp.testupload_jsp._jspService(testupload_jsp.java:80)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

signaler à un administrateur
Commentaire de ba3abbad le 29/04/2009 06:13:30

c bon ca marche nickel merci bcp

signaler à un administrateur
Commentaire de bassbaki le 14/05/2009 16:05:03

Bonjour, comment tu as fait ba3abbad pour que ça marche?

moi il me donne accès refusé à .../tmp
Est ce qu'il faut declarer qq chose dans le fichier web.xml?


signaler à un administrateur
Commentaire de stephaneg le 18/05/2009 16:15:14 10/10

c'est bon ça marche nickel merci bcp.

J'ai eu des petits problèmes au début mais maintenant c'est bon.

PB: manque de lib
Solution: ajouter commons-io-1.4.jar et commons-fileupload-1.2.1.jar

PB: problème de droits sur 'tmp' car j'utilise un projet Web Dynamique via Eclipse.
Solution: écrir le path en dur (changer File savedFile = new File(getServletContext().getRealPath("/") + "/BDD/", fullFile.getName()); par
File savedFile = new File("C:/apache-tomcat-5.5.27/webapps/nomDuProjet/tmp/", fullFile.getName());

signaler à un administrateur
Commentaire de stephaneg le 18/05/2009 17:43:49

certains ont demandés la même chose mais dans une servlet.

Voici un upload file via Struts, il est complet simple et surtout il marche du 1er coup.

http://www.roseindia.net/struts/strutsfileuploadandsave.shtml

signaler à un administrateur
Commentaire de LaSirenne le 02/07/2009 12:23:02

Salut à tous,
l'exemple est très intéressant, mais j'ai un grand problème avec l'endroit d'enregistrement de fichier;
il ya 2 methode:
soit en ecrivant le path en dur (c:/...)
soit en accedant au path de l'application (getServletContext().getRealPath("/") ........)
MAIS MON PROBLEME, COMMENT JE PEUX METTRE UN PATH RELATIF, c.à.dire un chemin relation à l'application:
exp: /monapplication/images
SVP qui peut m'aider?
merci

signaler à un administrateur
Commentaire de stephaneg le 02/07/2009 20:01:31

moi j'ai : "C:/apache-tomcat-5.5.27/webapps/monPjet/photos/"

la solution la pus simple est de mettre "C:/apache-tomcat-5.5.27/webapps/monPjet/" dans le ficher web.xml:

<context-param>
  <param-name>serverPath</param-name>
  <param-value>C:/apache-tomcat-5.5.27/webapps/monPjet/</param-value>
</context-param>

et dans la partie java:

getServletContext().getInitParameter("serverPath");

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Upload d'un fichier dans mysql en jsp [ par ingebouda ] Bonjour tout le monde. Je cherche&nbsp;&#224; uploader un fichier en jsp puis &#224; l'afficher. Mais l'upload doit se faire dans une base de donn&#23 JSP upload repertoire [ par g25451 ] Bonjour, En mettant ce code dans une jsp :  &lt;input type="file" name ="cible"&gt; J'ai un browser qui me permet de choisir un fichier, mais exporter fichier EXCEL à partir d'une page JSP [ par benkaouz3 ] Bonjour Je suis chargé dans une application de gestion de faire une fenetre qui permet de lancer une recherche,le résultat de cette recherche est sous Svp Urgent Jsp et tomcat5.5 upload&download files [ par scorpusfx2 ] svp c'est urgentj'aime telecharger et charger des fichiers de different type dans un reseaux local entre un serveur tomcat5.5 et un clientj'utilise ec upload d'un fichier sur un serveur tomacat via du https [ par aladinoDev ] Bonjour,Je souhaite savoir comment peut-on enregistrer un fichier sur mon disque durdans un serveur TomCat d'une manière sécurisé.j'utilise du J2EE à upload automatique [ par Nampter ] Bonjour,Je cherche une piste pour uploader un fichier  sur un serveur FTP lorsque ce fichier est présent dans mon répertoireExemple:  Si  test.txt pré upload fichier PDF [ par skillipo ] Bonjour,Dans mon projet JEE, j'ai besoin de faire un upload de fichiers pdf dans ma base postgres , j'ai declaré lors de mon mapping  que le questionn probleme d'excution de jsp avec jcreator [ par javac1 ] Bonsoir tout le monde , &nbsp; j'ai un petit souci au niveau de l'excution de mon fichier jsp avec jcreator :&nbsp;&nbsp; dans compilateur , j'ai prec creation de profil utilisateur [ par barkahoum ] BonjourJe suis en développement d'un module en jsp.On m'a demandé de faire des profiles utilisateurs . un étudiant pas exemple peut soumettre des rép jsp aide [ par miyavi ] bonjour,j ai quelque soucis avec jsp ( grand debutant),j aurais aim&#233; savoir comment faire&nbsp;pour ecrire dans un fichier texte les donn&#233;es


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.