Dans ce cas, j'ai besoin de télécharger les fichiers de mon API. hébergés dans d'autres serveur.
Dans mon cas, Il n'est pas nécessaire d'utiliser un client HTTP pour télécharger le fichier dans une URL externe. J'ai combiné plusieurs réponses et méthodes utilisées dans le code précédent pour les fichiers qui se trouvaient sur mon serveur local.
Mon code est :
@GetMapping(value = "/download/file/pdf/", produces = MediaType.APPLICATION_PDF_VALUE)
public ResponseEntity<Resource> downloadFilePdf() throws IOException {
String url = "http://www.orimi.com/pdf-test.pdf";
RestTemplate restTemplate = new RestTemplate();
byte[] byteContent = restTemplate.getForObject(url, String.class).getBytes(StandardCharsets.ISO_8859_1);
InputStream resourceInputStream = new ByteArrayInputStream(byteContent);
return ResponseEntity.ok()
.header("Content-disposition", "attachment; filename=" + "pdf-with-my-API_pdf-test.pdf")
.contentType(MediaType.parseMediaType("application/pdf;"))
.contentLength(byteContent.length)
.body(new InputStreamResource(resourceInputStream));
}
et il fonctionne avec les urls HTTP et HTTPS !
4 votes
Vous n'avez pas besoin d'une bibliothèque tierce. Spring dispose déjà de la
RestTemplate
0 votes
Questions étiquetées [[resttemplate](https://stackoverflow.com/questions/tagged/resttemplate) ]
6 votes
RestTemplate sera déprécié dans une future version, utilisez l'alternative plus moderne WebClient