Salut ,,

Voila , j'ai un formulaire upload.jsp ou j'entre la description dans un champ text et j'ai un autre champ file , ou je met mon fichier , je veux après avoir cliquer sur le bouton Envoyer , afficher devant chaque champ le nom que j'ai déja ecris dans le champ descripton et le nom du fichier que j'ai uploader , sauf que ca me donne l'erreur : Etat HTTP 500 - java.lang.NullPointerException
com.fichier.upload.Upload.getNomFichier(Upload.java:85)
com.fichier.upload.Upload.doPost(Upload.java:61)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)


Voila mon formulaire upload.jsp :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
<form action="Upload" method="post" enctype="multipart/form-data">
 
 
Description : <input type="text" name="descrip"/> ${description}<br>
 
 
Fichier : <input type="file" name="fiche"/> ${fiche}<br>
 
<input type="submit" value="Envoyer"/>
 
</form>
Et voila ma servlet Upload ou je fais mon traitement :

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
public class Upload extends HttpServlet {
 
 
    public static final String CHAMP_DESCRIPTION = "description";
    public static final String CHAMP_FICHIER     = "fiche";
 
    protected void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException,
            IOException {
        this.getServletContext().getRequestDispatcher( "/WEB-INF/upload.jsp" ).forward( request, response );
    }
 
    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException,
            IOException {
 
        String description = request.getParameter( "descrip" );
 
        request.setAttribute( CHAMP_DESCRIPTION, description );
 
        /*
         * Les données reçues sont multipart, on doit donc utiliser la méthode
         * getPart() pour traiter le champ d'envoi de fichiers.
         */
        Part part = request.getPart( CHAMP_FICHIER );
 
        /*
         * Il faut déterminer s'il s'agit d'un champ classique ou d'un champ de
         * type fichier : on délègue cette opération à la méthode utilitaire
         * getNomFichier().
         */
        String nomFichier = getNomFichier( part );
 
        /*
         * Si la méthode a renvoyé quelque chose, il s'agit donc d'un champ de
         * type fichier (input type="file").
         */
        if ( nomFichier != null && !nomFichier.isEmpty() ) {
            String nomChamp = part.getName();
            request.setAttribute( nomChamp, nomFichier );
        }
 
        this.getServletContext().getRequestDispatcher( "/WEB-INF/upload.jsp" ).forward( request, response );
 
    }
 
    /*
     * Méthode utilitaire qui a pour unique but d'analyser l'en-tête
     * "content-disposition", et de vérifier si le paramètre "filename" y est
     * présent. Si oui, alors le champ traité est de type File et la méthode
     * retourne son nom, sinon il s'agit d'un champ de formulaire classique et
     * la méthode retourne null.
     */
    private static String getNomFichier( Part part ) {
        /* Boucle sur chacun des paramètres de l'en-tête "content-disposition". */
        for ( String contentDisposition : part.getHeader( "content-disposition" ).split( ";" ) ) {
            /* Recherche de l'éventuelle présence du paramètre "filename". */
            if ( contentDisposition.trim().startsWith( "filename" ) ) {
                /*
                 * Si "filename" est présent, alors renvoi de sa valeur,
                 * c'est-à-dire du nom de fichier.
                 */
                return contentDisposition.substring( contentDisposition.indexOf( '=' ) + 1 );
            }
        }
        /* Et pour terminer, si rien n'a été trouvé... */
        return null;
 
    }
}
Merci