Téléchargement de fichiers à partir d'un service REST Spring Boot
Dans Spring Boot, vous pouvez utiliser un service REST pour télécharger des fichiers. Cependant, un problème courant survient lorsque le téléchargement échoue.
Voici une implémentation de service qui rencontre cette erreur :
<code class="java">@RequestMapping(path="/downloadFile",method=RequestMethod.GET) public ResponseEntity<InputStreamReader> downloadDocument( String acquistionId, String fileType, Integer expressVfId) throws IOException { // Code for file acquisition... HttpHeaders headers = new HttpHeaders(); headers.add("Cache-Control", "no-cache, no-store, must-revalidate"); headers.add("Pragma", "no-cache"); headers.add("Expires", "0"); InputStreamReader i = new InputStreamReader(new FileInputStream(file2Upload)); return ResponseEntity.ok().headers(headers).contentLength(file2Upload.length()) .contentType(MediaType.parseMediaType("application/octet-stream")) .body(i); }</code>
Pour résoudre ce problème, envisagez les solutions suivantes :
Option 1 : Utiliser un InputStreamResource
Utiliser un InputStreamResource pour envelopper le InputStream du fichier :
<code class="java">InputStreamResource resource = new InputStreamResource(new FileInputStream(file)); return ResponseEntity.ok() .headers(headers) .contentLength(file.length()) .contentType(MediaType.APPLICATION_OCTET_STREAM) .body(resource);</code>
Option 2 : Utiliser un ByteArrayResource
Comme suggéré par la documentation InputStreamResource, l'utilisation d'un ByteArrayResource peut être plus efficace :
<code class="java">Path path = Paths.get(file.getAbsolutePath()); ByteArrayResource resource = new ByteArrayResource(Files.readAllBytes(path)); return ResponseEntity.ok() .headers(headers) .contentLength(file.length()) .contentType(MediaType.APPLICATION_OCTET_STREAM) .body(resource);</code>
En incorporant ces solutions, vous devriez pouvoir télécharger avec succès des fichiers à partir de votre service REST Spring Boot.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!