Maison > Java > javaDidacticiel > le corps du texte

Comment réussir à télécharger des fichiers à partir d'un service REST Spring Boot ?

Barbara Streisand
Libérer: 2024-10-28 07:53:02
original
927 Les gens l'ont consulté

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

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!