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 chevronné
    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 : 44
    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
    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

    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
    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'
    }

  3. #3
    Membre chevronné
    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 : 44
    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
    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 confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    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 ?

  5. #5
    Membre chevronné
    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 : 44
    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
    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