Je suis en train de télécharger une image avec Angular2 à mon service REST (Loopback). Le service Loopback fonctionne (testé avec Postman) et accepte les fichiers avec l'en-tête x-www-form-urlencoded.Télécharger le fichier en angulaire2: Corps (FormData) vide
Voici une méthode de service simplifiée qui envoie la requête POST:
public uploadFile(url : string, file: File): Observable<any> {
let headers: Headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
let formData = new FormData();
formData.append('file', file);
let options: RequestOptionsArgs = { headers: headers };
return this.http.post(url, formData, options)
.map((res: any) => (res.text() != "" ? res.json() : {}));
}
Notez que j'ai mis l'en-tête d'application/x-www-form-urlencoded et envoyer les formData contenant le fichier dans le corps .
En angulaire, jusqu'au point où je http.post la demande, le formData est rempli avec le fichier, le contenu du fichier est présent, va bien everyting:
Mais dans la demande, le corps est un objet vide {}:
Je suppose, angulaire essaie de faire JSON.stringify (formData), au moins, lorsque je tente, je reçois aussi « {} » en sortie .
J'ai vu beaucoup de messages faisant exactement la même chose (http.post (url, formData)). Alors qu'est-ce qui me manque?
Avez-vous essayé de donner à former des données blob? –
Étrange. J'ai récemment créé un [Plunker] (https://plnkr.co/edit/R8yJpRWsE35pMpB1QeG3?p=preview) pour répondre à une question similaire et comme vous pouvez le voir, juste POSTing 'formData' fonctionne. AFAIK, angulaire ne fait pas automatiquement 'JSON.stringify (formData)'. Il POSTERa ce que vous passez tel quel. – AngularChef
Qu'est-ce qui est imprimé dans la console? –