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

AngularJS Discussion :

AngularJS et création de requête multipart/form-data


Sujet :

AngularJS

  1. #1
    Membre éprouvé
    Avatar de ce.moi7
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Mars 2004
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 164
    Points : 1 023
    Points
    1 023
    Par défaut AngularJS et création de requête multipart/form-data
    Bonjour,
    Avec AngularJS (et ngresource), je récupère deux objets JSON différents depuis un formulaire.

    A partir de ces 2 éléments JSON, je génère une requête de type "multipart/form-data".
    Le code est le suivant :
    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
    { 
    							method: 'POST',
     
    							transformRequest: function(data)
    			        		{
    								var objet1 = {"Objet1": data.objet1};
    						 		objet1 = angular.toJson(objet1);
     
    						 		var objet2 = {"Objet2": data.objet2};
    						 		objet2 = angular.toJson(objet2);
     
    								var fd = new FormData();
     
    								fd.append("Objet1",new Blob([objet1], { type: 'application/json; charset=ISO8859-15' }));
    								fd.append("Objet2",new Blob([objet2], { type: 'application/json; charset=ISO8859-15'}));
    					            return fd;
    						    },
    							headers: {'Content-Type':undefined, enctype:'multipart/form-data'}
    						}

    Ceci me génère la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Content-Type: multipart/form-data; boundary=---------------------------229961142931227
    Headers: {Accept=[application/json, text/plain, */*], accept-encoding=[gzip, deflate], Accept-Language=[fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3], connection=[keep-alive], Content-Length=[510], content-type=[multipart/form-data; boundary=---------------------------229961142931227], enctype=[multipart/form-data], Host=[172.30.103.20:8181], Referer=[http://172.30.103.20:8181/ses-console/], User-Agent=[Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0]}
    Payload: -----------------------------229961142931227
    Content-Disposition: form-data; name="Objet1"; filename="blob"
    Content-Type: application/json; charset=iso8859-15
     
    {"Objet1":{"code":"STP","libelle":"sdd"}}
    -----------------------------229961142931227
    Content-Disposition: form-data; name="Objet2"; filename="blob"
    Content-Type: application/json; charset=iso8859-15 content-id: <objet2>
     
    {"Objet2":{"code":"AMMMSTP","libelle":"dfsdf"}}
    -----------------------------229961142931227--

    J'aimerais ajouté l'attribut "Content-id" dans chacune des parties afin d'obtenir la requête suivante :


    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
    Content-Type: multipart/form-data; boundary=---------------------------229961142931227
    Headers: {Accept=[application/json, text/plain, */*], accept-encoding=[gzip, deflate], Accept-Language=[fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3], connection=[keep-alive], Content-Length=[510], content-type=[multipart/form-data; boundary=---------------------------229961142931227], enctype=[multipart/form-data], Host=[172.30.103.20:8181], Referer=[<a href="http://172.30.103.20:8181/ses-console/]" target="_blank">http://172.30.103.20:8181/ses-console/]</a>, User-Agent=[Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0]}
    Payload: -----------------------------229961142931227
    Content-Disposition: form-data; name="Objet1"; filename="blob"
    Content-Type: application/json; charset=iso8859-15
    Content-id:<objet1>
     
    {"Objet1":{"code":"STP","libelle":"sdd"}}
    -----------------------------229961142931227
    Content-Disposition: form-data; name="Objet2"; filename="blob"
    Content-Type: application/json; charset=iso8859-15 content-id: <objet2>
    Content-id:<objet2>
     
    {"Objet2":{"code":"AMMMSTP","libelle":"dfsdf"}}
    -----------------------------229961142931227--
    Est-ce que quelqu'un aurait l'amabilité de m'aider?

    Je vous remercie d'avance.

    A+

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Je ne bosse que sur Angular 2+ mais de ce que je vois de ton code il faudrait ajouter un header http :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    headers: {
    'Content-Type':undefined, 
    enctype:'multipart/form-data',
    'Content-id' : 'tonid'
    }
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  3. #3
    Membre éprouvé
    Avatar de ce.moi7
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Mars 2004
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 164
    Points : 1 023
    Points
    1 023
    Par défaut
    Merci pour ta réponse Spartacusply.

    Le problème est que ça me met le content-id dans l'"entête globale" et pas dans l'entête de chaque partie.

    Voici le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Content-Type: multipart/form-data; boundary=---------------------------229961142931227
    Headers: {Accept=[application/json, text/plain, */*], accept-encoding=[gzip, deflate], Accept-Language=[fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3], connection=[keep-alive], Content-id=[<objet1>], Content-Length=[510], content-type=[multipart/form-data; boundary=---------------------------229961142931227], enctype=[multipart/form-data], Host=[172.30.103.20:8181], Referer=[http://172.30.103.20:8181/ses-console/], User-Agent=[Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0]}
    Payload: -----------------------------229961142931227
    Content-Disposition: form-data; name="Objet1"; filename="blob"
    Content-Type: application/json; charset=iso8859-15
     
    {"Objet1":{"code":"STP","libelle":"sdd"}}
    -----------------------------229961142931227
    Content-Disposition: form-data; name="Objet2"; filename="blob"
    Content-Type: application/json; charset=iso8859-15 content-id: <objet2>
     
    {"Objet2":{"code":"AMMMSTP","libelle":"dfsdf"}}
    -----------------------------229961142931227--
    Je suis preneur de toutes solutions car là, je coince vraiment.

    Merci d'avance.

  4. #4
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Jamais vu un truc aussi bizarre ... Un multipart MIME pour faire passer plusieurs json d'un coup Vous avez jamais entendu parler de REST dans votre boite ?
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  5. #5
    Membre éprouvé
    Avatar de ce.moi7
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Mars 2004
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 164
    Points : 1 023
    Points
    1 023
    Par défaut
    Que ce soit du JSON ou autre chose, le problème est le même : comment renseigner un Content-id dans chaque partie du multipart.

    J'attire également ton attention sur le fait que JAX-RS (bibliothèque JAVA permettant de faire du REST) prend en compte le multipart et qu'on peut très bien faire du multipart avec des services REST. En outre, on peut mettre n'importe quoi dans le multipart : fichier, json, xml, ...

    Voici une petite doc qui pourrait t'intéresser : http://cxf.apache.org/docs/jax-rs-multiparts.html Elle concerne le multipart avec les REST. C'est assez sympa!

Discussions similaires

  1. select multiple dans un multipart/form-data
    Par L_latifa dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 13/10/2006, 13h27
  2. BUG avec form multipart/form-data
    Par LEF97 dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2006, 19h23
  3. [Servlet] pb multipart/form-data retourne valeur null
    Par Doumeasse38 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 12/05/2006, 08h46
  4. [Upload] enctype='multipart/form-data'
    Par shnouf dans le forum Langage
    Réponses: 2
    Dernier message: 28/03/2006, 15h02
  5. [Upload] Upload .jpg |enctype="multipart/form-data"
    Par Funraill.net dans le forum Langage
    Réponses: 4
    Dernier message: 16/01/2006, 17h44

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