Rumah  >  Artikel  >  Java  >  Bagaimana untuk Berjaya Muat Turun Fail daripada Perkhidmatan Spring Boot REST?

Bagaimana untuk Berjaya Muat Turun Fail daripada Perkhidmatan Spring Boot REST?

Barbara Streisand
Barbara Streisandasal
2024-10-28 07:53:02919semak imbas

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

Memuat Turun Fail daripada Perkhidmatan Spring Boot REST

Dalam Spring Boot, anda boleh menggunakan perkhidmatan REST untuk memuat turun fail. Walau bagaimanapun, isu biasa timbul apabila muat turun gagal.

Berikut ialah pelaksanaan perkhidmatan yang menghadapi ralat ini:

<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>

Untuk menyelesaikan isu ini, pertimbangkan penyelesaian berikut:

Pilihan 1: Menggunakan InputStreamResource

Gunakan InputStreamResource untuk membalut InputStream fail:

<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>

Pilihan 2: Menggunakan ByteArrayResource

Seperti yang dicadangkan oleh dokumentasi InputStreamResource, menggunakan ByteArrayResource mungkin lebih cekap:

<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>

Dengan menggabungkan penyelesaian ini, anda sepatutnya boleh memuat turun fail dengan jayanya daripada perkhidmatan Spring Boot REST anda.

Atas ialah kandungan terperinci Bagaimana untuk Berjaya Muat Turun Fail daripada Perkhidmatan Spring Boot REST?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn