Ich versuche ein Bild mit Angular2 auf meinen REST Service (Loopback) hochzuladen. Der Loopback-Dienst funktioniert (getestet mit Postman) und akzeptiert Dateien mit dem Header x-www-form-urlencoded.Datei hochladen in angular2: Body (FormData) leer
Hier ist eine vereinfachte Service-Methode, die die POST-Anforderung sendet:
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() : {}));
}
Bitte beachte, dass ich die Header-Anwendung festgelegt haben/x-www-form-urlencoded und die Formulardaten enthalten, die Datei in dem Körper senden .
In Angular, bis zu dem Punkt, wo ich die Anfrage http.post, die Formulardaten mit der Datei aufgefüllt wird, der Inhalt der Datei vorhanden ist, every ist in Ordnung:
Aber in der Anfrage, der Körper ist ein leeres Objekt {}:
ich gehe davon aus, Angular versucht JSON.stringify (Formdata), zumindest zu tun, wenn ich das versuche, erhalte ich auch „{}“ als Ausgang .
Ich habe viele Beiträge gesehen, die genau das gleiche machen (http.post (url, formData)). Also was fehlt mir?
Haben Sie versucht zu bilden Blob-Daten zu geben? –
Seltsam. Ich habe vor kurzem eine [Plunker] (https://plnr.rc/edit/R8yJpRWsE35pMpB1QeG3?p=preview) erstellt, um eine ähnliche Frage zu beantworten und wie Sie sehen können, funktioniert nur das POST von 'formData'. AFAIK, Angular DOES nicht automatisch 'JSON.stringify (formData)'. Es wird POST, was Sie passieren, wie es ist. – AngularChef
Was wird in der Konsole gedruckt? –