2016-06-03 2 views
1

Donc, j'essaie de poster une requête multipart avec angular et la charge utile de la requête ne correspond pas à mes attentes. Qu'est-ce que je fais:Requêtes multipart avec Angular

function sendBroadcastImage(ids, img) { 
     var fd = new FormData(); 
     fd.append('destinationUsersIds', angular.toJson({ 
      values : ids 
     })); 
     fd.append('file', img); 

     $http.post(
      '/some/api/url/', 
      fd, 
      { 
       transformRequest: angular.identity, 
       headers: { 'Content-Type': undefined } 
      }); 
    } 

Je reçois cette charge utile:

------WebKitFormBoundary3KBBZ9GEkqoGGQMC 
Content-Disposition: form-data; name="destinationUsersIds" 

{"values":[2235]} 
------WebKitFormBoundary3KBBZ9GEkqoGGQMC 
Content-Disposition: form-data; name="file"; filename="capacete.jpg" 
Content-Type: image/jpeg 


------WebKitFormBoundary3KBBZ9GEkqoGGQMC-- 

Quelle charge utile j'ai besoin (avec le type de contenu pour la première limite trop):

------WebKitFormBoundary3KBBZ9GEkqoGGQMC 
Content-Disposition: form-data; name="destinationUsersIds" 
Content-Type: application/json 

{"values":[2235]} 
------WebKitFormBoundary3KBBZ9GEkqoGGQMC 
Content-Disposition: form-data; name="file"; filename="capacete.jpg" 
Content-Type: image/jpeg 


------WebKitFormBoundary3KBBZ9GEkqoGGQMC-- 

Est c'est possible? Comment puis-je le faire?

Répondre

2

Selon this guy et la documentation de FormData, vous pouvez utiliser Blob pour ajouter un champ avec un type de contenu spécifique.

var fd = new FormData(); 
formData.append('destinationUsersIds', new Blob([angular.toJson({ 
    values: ids 
})], { 
    type: "application/json" 
})); 

Faites-moi savoir si cela fonctionne pour vous.

+0

C'est DONNEE! Merci mec! –