Problème Upload en JAVA EE
Bonjour à tous, j'ai un problème avec mon programme je voudrai faire des Upload de fichier fourni au formulaire mais a chaque essai j'ai une erreur NULLPOINTEREXCEPTION, j'ajoute mon code et l'erreur:
Code:
1 2 3 4 5 6 7 8
| mars 12, 2014 3:15:39 PM org.apache.catalina.core.StandardWrapperValve invoke
Grave: "Servlet.service()" pour la servlet createUser a généré une exception
java.lang.NullPointerException
at Controller.CreateUser.getFilename(CreateUser.java:265)
at Controller.CreateUser.doPost(CreateUser.java:76)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) |
mon formulaire
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div>
<form action="/INF3005-TP1/createUser" method="post" enctype="multipart/form-data">
texte: <input type="text" name="description" /> <br/>
photo: <input type="file" name="file" />
<input type="submit" value = "envoyé"/>
</form>
</div>
</body>
</html> |
ma classe qui doit réaliser la sauvegarde du fichier
Code:
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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Part filePart = request.getPart("file"); // Retrieves <input type="file" name="file">
String filename = getFilename(filePart);
InputStream filecontent = filePart.getInputStream();
ecrireFichier( filecontent, filename, CHEMIN );
//récupération des champs du formulaire
User user = new User();
//traiterImage(user, request, CHEMIN );
user.setPhoto(CHEMIN+filename+"");
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Cree un utilisateur a partir des champs du formulaire d'inscription";
}// </editor-fold>
/*
* Méthode utilitaire qui a pour but d'écrire le fichier passé en paramètre
* sur le disque, dans le répertoire donné et avec le nom donné.
*/
private void ecrireFichier( InputStream contenuFichier, String nomFichier, String chemin )
throws IOException {
/* Prépare les flux. */
BufferedInputStream entree = null;
BufferedOutputStream sortie = null;
try {
/* Ouvre les flux. */
entree = new BufferedInputStream( contenuFichier, TAILLE_TAMPON );
sortie = new BufferedOutputStream( new FileOutputStream( new File( chemin + nomFichier ) ),
TAILLE_TAMPON );
/*
* Lit le fichier reçu et écrit son contenu dans un fichier sur le
* disque.
*/
byte[] tampon = new byte[TAILLE_TAMPON];
int longueur = 0;
while ( ( longueur = entree.read( tampon ) ) > 0 ) {
sortie.write( tampon, 0, longueur );
}
} catch ( Exception e ) {
throw new IOException( "Erreur lors de l'écriture du fichier sur le disque." );
} finally {
try {
sortie.close();
} catch ( IOException ignore ) {
}
try {
entree.close();
} catch ( IOException ignore ) {
}
}
}
private String getFilename(Part part) {
for (String cd : part.getHeader("content-disposition").split(";")) {
if (cd.trim().startsWith("filename")) {
String filename = cd.substring(cd.indexOf('=') + 1).trim().replace("\"", "");
return filename.substring(filename.lastIndexOf('/') + 1).substring(filename.lastIndexOf('\\') + 1); // MSIE fix.
}
}
return null;
}
} |
merci d'avance pour toutes vos correction et remarque