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 :

Formulaire avec input="text" et input="file"


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 92
    Par défaut Formulaire avec input="text" et input="file"
    Bonjour,
    j'ai un formulaire qui fonctionne bien au départ, ne contenant que du texte, j'ai voulu l'adapter pour que l'utilisateur puisse envoyer une image (son portrait en l'occurrence), et j'ai donc rajouté enctype="multipart/form-data" dans la balise form, mais du coup il ne m'est plus possible de récupérer mes input de type text.
    Sur ce forum un vieux post indique qu'il faut utiliser 2 formulaires avec un seul bouton pour le valider mais je ne sais pas du tout comment faire et ne trouve aucun exemple concret.
    C'est la bonne méthode où je dois m'y prendre autrement ?
    Quelques explications seraient les bienvenues

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    vous devez récupérer vos input text de la meme manier que vous input file, en parsant le multipart form data. Des outils comme commons-fileupload le font pour vous. Ce qui est sur c'est que request.getParameter() ne vous retournera rien, car il ne reconnait pas dans sa spec cet encodage.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 92
    Par défaut
    hum, je me rends compte de ce problème, mais du coup ca m'oblige à réécrire toute la servlet ??

    Peut-on créer un objet de type collection au début de la servlet ou set ou je sais pas quoi pour y mettre tous les paramètres de type texte et ensuite pouvoir récupérer les paramètres comme si on utilisait la request mais en manipulant un aute objet, histoire que je n'ai pas tout à réécrire.

    Euh en passant, si je remets des paramètres dans ma servlet ils vont bien repartir vers la jsp dans le même format qu'avant ? ou bien faut-il faire une autre manip avant d'utiliser l'objet request ?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    regardez la doc de commons-fileupload, tout y est expiqué, y compris comment définir un filter qui fait le parsing et permet d'utiliser la servlet comme avant

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 92
    Par défaut
    Effectivement, je suis dessus depuis hier à vrai dire, mais après avoir apporté des modifications j'ai un soucis : je vérifie pourtant bien si ma requete est de type MultipartContent avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (ServletFileUpload.isMultipartContent(request))
    mais plus loin j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try {
                    items = upload.parseRequest(request);
                } catch (FileUploadException ex) {
                    throw new DaoException("Impossible de parser la requête\n" + ex.getMessage(), 4);
                }
    qui me génère
    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
    GRAVE: "Servlet.service()" pour la servlet adminUtilisateur a généré une exception
    dao.DaoException: Impossible de parser la requête
    the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is null
            at web.administration.AdminUtilisateur.service(AdminUtilisateur.java:87)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
            at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
            at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
            at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
            at java.lang.Thread.run(Thread.java:662)
    quand je souhaite seulement afficher les données sans renvoyer le formulaire, c'est à s'arracher les cheveux là non ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 92
    Par défaut
    je voulais dire que la servlet n'aurait pas dû essayer de parser la requete à ce moment car je souhaite seulement récupérer les infos sur l'utilisateur comme avant pour les afficher, le formulaire multipart s'affichant à ce moment et étant uniquement traité dans ce cas...

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

Discussions similaires

  1. Position du texte dans un input type="text"
    Par bulldo dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 03/08/2011, 12h41
  2. Réponses: 12
    Dernier message: 17/03/2009, 11h51
  3. formulaire avec champs de texte dans une boucle
    Par sssmix dans le forum Struts 1
    Réponses: 2
    Dernier message: 30/04/2008, 16h03
  4. [DOM] Créer <input> avec un type != "text"
    Par Mr N. dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/02/2006, 09h54
  5. Réponses: 2
    Dernier message: 15/04/2004, 15h44

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