2016-11-18 18 views
0

Ich erstelle Web-Anwendung basierend auf REST API. Ich versuche, Datei auf Front-End zu laden und es an Back-End zu senden und dann in meiner mongodb-Datenbank (GridFSDBFile) zu speichern. Nach dem Senden POST mit FormData, von Front-End (eckig) zu Spring Boot-Back-End, erhalte ich leeres Objekt.MultiPart FormData leer nach dem Mapping

Front-end-Funktion:

saveNewImage(userFile, fileName){ 
     var formdata = new FormData(); 
     formdata.append('name', fileName); 
     formdata.append('file', userFile); 
     return this.$http({ 
      url: this.getUrl('file/uploadNew'), 
      method: "POST", 
      data: formdata, 
      cache: false, 
      headers: { 
       "Content-Type": "multipart/*;boundary=gc0p4Jq0M2Yt08jU534c0p" 
      }, 
      processData: false 
     }); 

Im Back-End-Controller i eingehende Anforderungen abbilden wollen und Datei zu meiner Datenbank zu speichern. Ich versuche, dies mit @ModelAttribute adnotations zur Karte:

@RequestMapping(value = "/uploadNew", headers = "content-type=multipart/*", method = RequestMethod.POST) 
    @ResponseBody 
    public ResponseEntity<String> uploadFileHandler(@ModelAttribute("name") String name, @ModelAttribute("file") MultipartFile file) { 
     FileInputStream fis = null; 
     ObjectMapper ob = new ObjectMapper(); 
     AnnotationConfigApplicationContext ctx = null; 


//saving file to database 
      (...) 
       return ResponseEntity.status(HttpStatus.OK).body(ob.writeValueAsString("ok")); 
      } catch (JsonProcessingException e) { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

und ich bekam leere Zeichenfolge mit dem Namen und null statt meiner Datei, wie folgt:

2016-11-18 19:03:03.657 ERROR 14114 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause 

java.lang.NullPointerException: null 

Ich bin nicht sicher, wo das Problem liegt Front-End-Code scheint gut zu funktionieren (Netzwerk-Debugging zeigt, dass Anfrage gewünscht hat, nicht leere Felder), ist es ein Mapping-Problem? Wie man es repariert?

Danke!

Antwort

0

Falls jemand das gleiche Problem haben würde, war Lösung Content-Typen zu

headers: {'Content-Type': undefined } 
zu ändern