2017-10-02 2 views
0

Hallo Ich schreibe eine Anwendung, mit der Benutzer eine Datei hochladen und später herunterladen können. Was ich gefunden habe ist, dass die Dateierweiterung aus restTemplate.getForEntity entfernt wird, damit RequestMapping nicht den vollen Dateinamen bekommt. Kann jemand bestätigen, dass das richtig ist und wie man das überwindet?RestTemplate.getForEntity wird Dateierweiterung entfernen?

Controller:

@RequestMapping(value = "/uploaded/{filename}", method = RequestMethod.GET) 
public ResponseEntity<Resource> getUploaded(@PathVariable String filename) { 
    logger.debug("getUploaded filename=" + filename); 

    Resource file = storageService.loadAsResource(filename + ".png"); 

    return ResponseEntity.ok().body(file); 
} 

Unit Testing:

System.err.println("imageUpload = " + imageUpload); 
    ResponseEntity<Resource> responseResource = this.restTemplate.getForEntity("/uploaded/" + imageUpload, Resource.class); 
    assertNotNull(responseResource); 
    System.err.println("responseResource = " + responseResource.toString()); 
    assertEquals(HttpStatus.FOUND, responseResource.getStatusCode()); 
    assertEquals(resource, responseResource.getBody()); 

Logging Show:

imageUpload = favicon1.png 
getUploaded filename=favicon1 
responseResource = <200 OK,Byte array resource [resource loaded from byte array],{Content-Type=[image/png], Content-Length=[8971], Date=[Mon, 02 Oct 2017 01:58:39 GMT]}> 

Wie Sie sehen können, Upload ist ein Dateiname mit '.png' Erweiterung und wird korrekt an restTemplate.getForEntity() übergeben, aber getUploaded() kann nur Dateiname ohne Erweiterung erhalten, also habe ich t o fügen Sie manuell ".png" hinzu, was hässlich ist. Ich weiß also nicht, ob etwas an meiner Implementierung scheitert oder wie jemand anderes dieses Problem der Dateierweiterung löst, das allgemein sein sollte.

+0

Try contentnegotiating Resolver. Standardmäßig, wenn Sie etwas an die URL mit der Erweiterung übergeben, wird versucht, einen Content-Resolver zu finden. http://websystique.com/springmvc/spring-4-mvc-contentnegotiatingviewresolver-example/ – chetank

Antwort

0

Endlösung:

@Configuration 
public class WebMvcConfiguration extends WebMvcConfigurerAdapter { 
    @Override 
    public void configurePathMatch(PathMatchConfigurer matcher) { 
     matcher.setUseRegisteredSuffixPatternMatch(true); 
    } 
} 
Verwandte Themen