Dateien von einem Spring Boot-REST-Dienst herunterladen
In Spring Boot können Sie einen REST-Dienst zum Herunterladen von Dateien verwenden. Es tritt jedoch ein häufiges Problem auf, wenn der Download fehlschlägt.
Hier ist eine Dienstimplementierung, bei der dieser Fehler auftritt:
<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>
Um dieses Problem zu beheben, ziehen Sie die folgenden Lösungen in Betracht:
Option 1: Verwenden einer InputStreamResource
Verwenden Sie eine InputStreamResource, um den InputStream der Datei zu umschließen:
<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: Verwenden einer ByteArrayResource
Wie in der InputStreamResource-Dokumentation vorgeschlagen, kann die Verwendung einer ByteArrayResource effizienter sein:
<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>
Durch die Integration dieser Lösungen sollten Sie in der Lage sein, Dateien erfolgreich von Ihrem Spring Boot REST-Dienst herunterzuladen.
Das obige ist der detaillierte Inhalt vonWie lade ich Dateien erfolgreich von einem Spring Boot REST-Dienst herunter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!