2017-10-02 10 views
0

Salut J'écris une application qui permet à l'utilisateur de télécharger un fichier, puis le télécharger plus tard. Ce que j'ai trouvé est que l'extension de fichier sera retirée de restTemplate.getForEntity ainsi RequestMapping ne recevra pas le nom de fichier complet. Quelqu'un peut-il confirmer que c'est correct et comment surmonter cela?RestTemplate.getForEntity supprimera l'extension de fichier?

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); 
} 

Tests unitaires:

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()); 

Afficher Logging:

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]}> 

Comme vous pouvez le voir, ImageUpload est un nom de fichier avec '.png' extension et la est correctement passé à restTemplate.getForEntity() mais getUploaded() ne peut recevoir que le nom de fichier sans extension, donc j'ai t o ajouter manuellement '.png' ce qui est moche. Donc je ne sais pas s'il y a quelque chose qui ne va pas dans mon implémentation ou comment quelqu'un d'autre résoud ce problème d'extension de fichier qui devrait être général.

+0

Essayez d'utiliser résolveur contentnegotiating. Par défaut, si vous passez quelque chose à l'url avec l'extension, il essaie de trouver un résolveur de contenu. http://websystique.com/springmvc/spring-4-mvc-contentnegotiatingviewresolver-example/ – chetank

Répondre

0

solution finale:

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