0

Ich muss das Bild an den Server senden, ich benutze Winkel 2, so dass die reqest asynch sein müssen. Dies ist der Code verwende ich das Bild auf dem Client senden:Datei wird nicht gesendet oder empfangen von asynch XmlHttpRequest

return Observable_1.Observable.create(function (observer) { 
      var formData = new FormData(); 
      var xhr = new XMLHttpRequest(); 
      formData.append('image', image); 
      xhr.onreadystatechange = function() { 
       if (xhr.readyState === 4) { 
        if (xhr.status === 200) { 
         observer.next({ response: xhr.response, status: xhr.status }); 
         observer.complete(); 
        } 
        else { 
         observer.error({ response: xhr.response, status: xhr.status }); 
        } 
       } 
      }; 
      xhr.open('POST', url, true); 
      if (headers) 
       for (var _i = 0, headers_1 = headers; _i < headers_1.length; _i++) { 
        var header = headers_1[_i]; 
        xhr.setRequestHeader(header.header, header.value); 
       } 
      xhr.send(formData); 
     }); 

Der Code verwende ich die requst auf dem Server ich wirklich habe keine Ahnung,

@PostMapping(value = "/api/product/image", consumes = {"multipart/mixed", "multipart/form-data"}) 
    public ResponseEntity<ImageToken> postImage(MultipartHttpServletRequest request) throws ParseException { 
     MultipartFile file = request.getFile(request.getFileNames().next()); 
     return imageService.saveImage("/products/", file); 
    } 

hande was falsch ist. Der Handler wird geclippt, löst aber eine Ausnahme auf request.getFileName() aus, und ich sehe keine Dateien innerhalb der Anfrage im Debugger.

Hier ist mein mehrt Resolver conf:

@Bean(name = "multipartResolver") 
    public MultipartResolver multipartResolver(){ 
     CommonsMultipartResolver resolver = new CommonsMultipartResolver(); 
     resolver.setDefaultEncoding("UTF-8"); 
     resolver.setMaxUploadSize(500000000); 
     resolver.setMaxUploadSizePerFile(50000000); 
     return resolver; 
    } 

Meine Versionen von Apache Commons und Feder boot:

<parent> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <groupId>org.springframework.boot</groupId> 
     <version>1.5.2.RELEASE</version> 
     <relativePath /> 
    </parent> 

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

Antwort

1

Sie lassen den Frühling die mehrt Retrieval tun durch eine mehrteilige Dateiparameter und Kommentierung Angabe es mit dem Namen des Teils:

public ResponseEntity<ImageToken> postImage(@RequestPart("image") final MultipartFile file) { 
+0

Danke, ich weiß und habe es vorher versucht, aber es tut Ändern Sie nicht die Tatsache, dass die Anfrage selbst keine Dateien enthüllt, obwohl ich sehe, dass sie gesendet werden, in den Entwicklertools = ( –

Verwandte Themen