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 :
C'est donc en rapport avec cette ligne :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)
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.FileItem item = (FileItem) iter.next();
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
Partager