Home > Java > javaTutorial > body text

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

Barbara Streisand
Release: 2024-10-28 07:53:02
Original
927 people have browsed it

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

Downloading Files from a Spring Boot REST Service

In Spring Boot, you can utilize a REST service to download files. However, a common issue arises when downloading fails.

Here's a service implementation that encounters this error:

<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>
Copy after login

To resolve this issue, consider the following solutions:

Option 1: Using an InputStreamResource

Use an InputStreamResource to wrap the InputStream of the file:

<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>
Copy after login

Option 2: Using a ByteArrayResource

As suggested by the InputStreamResource documentation, using a ByteArrayResource may be more efficient:

<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>
Copy after login

By incorporating these solutions, you should be able to download files successfully from your Spring Boot REST service.

The above is the detailed content of How to Successfully Download Files from a Spring Boot REST Service?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!