Heim > Java > javaLernprogramm > Hauptteil

Wie lade ich Dateien erfolgreich von einem Spring Boot REST-Dienst herunter?

Barbara Streisand
Freigeben: 2024-10-28 07:53:02
Original
998 Leute haben es durchsucht

How to Successfully Download Files from a Spring Boot REST Service?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage