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 :

Upload servlet/JSP avec FileUpload


Sujet :

Servlets/JSP Java

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Upload servlet/JSP avec FileUpload
    Bonsoir tout le monde,

    Je dois développer une application web qui permet d'uploader des images. J'ai donc choisi d'utiliser la librairie Commons FileUpload d'Apache.

    J'utilise NetBeans et Tomcat 6.0
    J'ai bien les différentes librairies d'installées :
    commons-fileupload-1.2.2.jar
    commons-io-2.0.jar


    Voilà le code de ma JSP :

    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
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
     
            <form method="POST" action="upload.do" enctype="multipart/form-data">
                 Fichier : <input type="file" name="image">
                 <input type="submit" name="envoyer" value="Envoyer le fichier">
            </form>
     
     
        </body>
    </html>

    Voici le code de mon servlet :

    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
     
    destinationDir = new File("C:\\Users\\Moi\\Documents\\NetBeansProjects\\projetWeb\\web\\WEB-INF\\files");
     
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        out.println("<h1>Servlet File Upload Example using Commons File Upload</h1>");
        out.println();
     
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
     
        if(isMultipart) {
            // Create a factory for disk-based file items
            FileItemFactory factory = new DiskFileItemFactory();
     
    	// Create a new file upload handler
    	ServletFileUpload upload = new ServletFileUpload(factory);
     
    	String fileName ="";
            try {
     
                    List items = upload.parseRequest(request);
                    Iterator iter = items.iterator();
    			while (iter.hasNext()) {
    			    FileItem item = (FileItem) iter.next();
     
    			    if (!item.isFormField())
    			    {
    			    	fileName = item.getName();
                                    File uploadedFile = new File(destinationDir,fileName);
                                    try {
                                        item.write(uploadedFile);
                                    } catch (Exception ex) {
                                        Logger.getLogger(Upload.class.getName()).log(Level.SEVERE, null, ex);
                                    }
     
                                }
                }
          } catch (FileUploadException ex) {
             Logger.getLogger(Upload.class.getName()).log(Level.SEVERE, null, ex);
          }
        }
     
    }

    Lors de l'exécution de mon application, je reçois cette erreur :

    java.lang.ClassCastException: org.apache.commons.fileupload.disk.DiskFileItem cannot be cast to org.apache.tomcat.util.http.fileupload.FileItem
    servlet.Upload.doPost(Upload.java:126)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    C'est donc en rapport avec cette ligne :

    FileItem item = (FileItem) iter.next();
    J'ai beau avoir cherché partout, essayé différentes techniques, regardé les différentes solutions déjà proposé ici mais je n'ai pas trouvé comment résoudre mon problème.
    Une journée que je m'arrache les cheveux sur ce problème et maintenant j'ai un beau mal de tête.

    Pouvez-vous m'aider ?

    Mes cheveux et ma tête vous remercient d'avance

  2. #2
    Membre actif Avatar de DarkMolo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Juillet 2006
    Messages : 207
    Points : 277
    Points
    277
    Par défaut
    Salut,

    On va faire simple, je te copie comment je fais et qui marche, essaye avec, si ça marche pas aussi , on verra autre chose.

    Dans ma servlet, je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    ServletFileUpload servletFileUpload = new ServletFileUpload();
    FileItemIterator fielItemIterator = servletFileUpload.getItemIterator(paramHttpRequest);
    while (fielItemIterator.hasNext()) {
         FileItemStream fileItemStream = fielItemIterator.next();  
         // Tu as fileItemStream.openStream() que tu peux réécrire sur un autre flux sortant comme souhaité
    }
    Certified SCJP 5.0 / SCWCD 5.0 / SCEA 5.0
    C'est une grande folie de vouloir être sage tout seul.
    Duc de La Rochefoucauld

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Merci de ton aide !

    J'ai recopié ton code, et ajouter les instructions pour sauvegarder le fichier (pris sur un autre topic) et sa fonctionne.
    Je ne comprend pas encore toute la procédure pour la sauvegarde, mais je vais bien étudier sa pour l'adapter comme il faut

    Problème résolu ! Merci beaucoup !

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/09/2009, 09h37
  2. Réponses: 1
    Dernier message: 16/07/2007, 12h49
  3. Utiliser Servlet/JSP avec WAMP
    Par damien77 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 12/06/2007, 08h28
  4. Mise en route Servlet, JSP avec Struts
    Par sir_gcc dans le forum Struts 1
    Réponses: 1
    Dernier message: 24/03/2007, 18h50
  5. [2.0] uploader un fichier avec FileUpload
    Par cortex024 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 16/03/2007, 15h14

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