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

Développement Web en Java Discussion :

Upload fichier avec la Class Part


Sujet :

Développement Web en Java

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur JAVA & PHP
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur JAVA & PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Points : 71
    Points
    71
    Par défaut Upload fichier avec la Class Part
    Bonjour
    Je tente de uploader une image depuis une page jsp
    Lors de ma requête voici le msg d'erreur que j'obtient

    message org.apache.tomcat.util.http.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is application/x-www-form-urlencoded

    Je ne parviens pas à règler mon problème, une personne peut elle m'aider svp ?

    Voici le code que j'ai mis en place

    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
     
    MA JSP
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Envoi de fichier</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
    <link type="text/css" rel="stylesheet" href="inc/form.css">
    </head>
    <body>
    	<form action="upload" method="post" enctype="multipart/for-data">
    		<fieldset>
    			<legend> Envoi de fichier</legend>
    			<label for="description">Description du fichier</label>
    			<input type="text" id="description" name="description" value=""/>
    			 <span class="succes"><c:out value="${description}" />
    			<br/>
     
    			<label for="fichier">Emplacement du fichier <span class=requis"">*</span></label>
    			<input type="file" id="fichier" name="fichier" /> <span class="succes"><c:out value="${fichier}" /></span>
    			<br/>
     
    			<input type="submit" value="Envoyer" name="form_fichier" class="sansLabel"/>
     
    		</fieldset>
    	</form>
    </body>
    </html>

    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    MA SERVLET
     
    package servlet;
     
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.MultipartConfig;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.Part;
     
    /**
     * Servlet implementation class Upload
     */
    @WebServlet("/upload")
    @MultipartConfig (location = "/tmp", fileSizeThreshold = 1024 * 1024, maxFileSize = 1024 * 1024 * 5, maxRequestSize = 1024 * 1024 * 5 * 5) 
    public class Upload extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    	public static final String VUE = "upload.jsp";
    	public static final String CHAMP_DESCRIPTION = "description";
    	public static final String CHAMP_FICHIER = "fichier";
     
        /**
         * @see HttpServlet#HttpServlet()
         */
        public Upload() {
            super();
            // TODO Auto-generated constructor stub
        }
     
    	/**
             * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
             */
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		req.getRequestDispatcher(VUE).forward(req, resp);
    	}
     
    	/**
             * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
             */
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		// TODO Auto-generated method stub
     
    		String description = req.getParameter(CHAMP_DESCRIPTION);
    		req.setAttribute(CHAMP_DESCRIPTION, description);
     
    		/*
    		 * Les données reçu sont multiPart 
    		 * on doit donc utiliser la methode getPart() pour trater le champ fichier
    		 */
     
     
    		Part part = req.getPart(CHAMP_FICHIER);	
    		String nomFichier = getNomFichier(part);
     
    		if (nomFichier != null && !nomFichier.isEmpty()) {
    			String nomChamp = part.getName();
    			req.setAttribute(nomChamp, nomFichier);
     
    		}
     
    		req.getRequestDispatcher(VUE).forward(req, resp);
    	}
     
    	private static String getNomFichier(Part part) {
    		/*
    		 * On vérifie dans l'entete que l'attribut filename existe
    		 * Boucle sur chacun des parametre
    		 */
     
    		for(String contentDisposition : part.getHeader("Content-Disposition").split(";")) {
    			//recherche du parametre filename
    			if(contentDisposition.trim().startsWith("filename")) {
    				/*
    				 * revoi du nom du fichier
    				 */
     
    				return contentDisposition.substring(contentDisposition.indexOf('=')+ 1);
    			}
    		}
     
    		return null;
    	}
     
    }

  2. #2
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2013
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 269
    Points : 434
    Points
    434
    Par défaut
    Bonjour,

    je ne sais pas si le problème vient de là mais l'enctype doit être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enctype="multipart/form-data"

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur JAVA & PHP
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur JAVA & PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par VirgApps Voir le message
    Bonjour,

    je ne sais pas si le problème vient de là mais l'enctype doit être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enctype="multipart/form-data"

    Merci beaucoup c'était effectivement et je ne l'avais pas vue encore aujourd'hui
    L'erreur était sous mon nez.

    Et bien encore merci

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

Discussions similaires

  1. Upload fichiers avec Applet vers serveur Asp .net
    Par rouliow dans le forum ASP.NET
    Réponses: 4
    Dernier message: 20/05/2008, 17h47
  2. ouvrir un fichier avec la classe Desktop
    Par Bloodista dans le forum Général Java
    Réponses: 2
    Dernier message: 23/04/2008, 17h32
  3. upload fichier avec flash
    Par escteban dans le forum Flash
    Réponses: 2
    Dernier message: 13/04/2007, 13h10
  4. [Upload] upload fichiers avec multiple submit
    Par dolf13 dans le forum Langage
    Réponses: 17
    Dernier message: 06/06/2006, 01h20
  5. [AJAX] upload fichiers avec AJAX
    Par jibouze dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 08/12/2005, 21h04

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