Datei-Upload mit Angular2 zur REST-API

erzeit arbeite ich an einer Spring-REST-API mit einer in Angular 2 codierten Schnittstell

Mein Problem ist, dass ich mit Angular 2 keine Datei hochladen kann.

Meine Webressourcen in Java sind:

@RequestMapping(method = RequestMethod.POST, value = "/upload")
public String handleFileUpload(@RequestParam MultipartFile file) {
    //Dosomething 
}

Und es funktioniert perfekt, wenn ich es über eine URL-Anfrage mit Auth-Header usw. aufrufe. (Mit der Advanced Rest Client-Erweiterung für Chrome.)

Proof: (in diesem Fall funktioniert alles einwandfrei)

Ich habe das @ hinzugefü

<bean id="multipartResolver"
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />

Spring-Konfigurationsdatei und die Pom-Abhängigkeit

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.2</version>
</dependency>

ABER wenn ich versuche, dasselbe mit einem Webformular zu tun:

<input type="file" #files (change)="change(files)"/>
<pre>{{fileContents$|async}}</pre>

Mit der (Änderungs-) Methode:

change(file) {
    let formData = new FormData();
    formData.append("file", file);
    console.log(formData);
    let headers = new Headers({
        'Authorization': 'Bearer ' + this.token,
        'Content-Type': 'multipart/form-data'
    });
    this.http.post(this.url, formData, {headers}).map(res => res.json()).subscribe((data) => console.log(data));
    /*
    Observable.fromPromise(fetch(this.url,
        {method: 'post', body: formData},
        {headers: this.headers}
    )).subscribe(()=>console.log('done'));
    */
}

Mein Webdienst gibt mir einen Fehler 500 zurück, mit dem in Tomcat-Protokollen:http: //pastebin.com/PGdcFUQ

Ich habe das @ ausprobie'Content-Type': undefined Methode auch, aber ohne Erfolg (der Webdienst gibt mir in diesem Fall einen 415-Fehler zurück.

Kann mir jemand helfen, herauszufinden, wo das Problem liegt?

Problem gelöst, ich aktualisiere diese Frage später mit meinem Code :) aber schau dir den Plunker an, er funktioniert perfekt. Vielen Dank

Antworten auf die Frage(16)

Ihre Antwort auf die Frage