Rumah > Java > javaTutorial > teks badan

Mengapakah muat turun perkhidmatan Spring Boot REST saya gagal, walaupun penyemak imbas memulakan proses?

Barbara Streisand
Lepaskan: 2024-10-27 17:47:31
asal
160 orang telah melayarinya

 Why is my Spring Boot REST service download failing, despite the browser initiating the process?

Muat turun Fail daripada Spring Boot Rest Service: Menyelesaikan Masalah Gagal Muat Turun

Artikel ini menangani masalah yang dihadapi semasa cuba memuat turun fail melalui Perkhidmatan REST But Spring. Walaupun permulaan muat turun dalam penyemak imbas, proses itu gagal secara konsisten. Berikut ialah analisis isu dan penyelesaian yang berpotensi:

Kaedah Perkhidmatan:

Kod yang disediakan menunjukkan kaedah perkhidmatan yang bertanggungjawab untuk memuat turun fail:

<code class="java">@RequestMapping(path="/downloadFile",method=RequestMethod.GET)
public ResponseEntity<InputStreamReader> downloadDocument(String acquistionId, String fileType, Integer expressVfId) throws IOException {
    File file2Upload = new File("C:\Users\admin\Desktop\bkp\1.rtf");
    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>
Salin selepas log masuk

Pilihan 1: Menggunakan Sumber InputStream

Kod yang disediakan mencipta InputStreamReader daripada fail dan mengembalikannya dengan ResponseEntity. Walau bagaimanapun, adalah disyorkan untuk menggunakan InputStreamResource daripada perpustakaan teras spring. Pelaksanaan ini menawarkan sumber untuk strim, memastikan pengendalian strim yang betul semasa proses muat turun.

<code class="java">@RequestMapping(path = "/download", method = RequestMethod.GET)
public ResponseEntity<Resource> download(String param) throws IOException {
    InputStreamResource resource = new InputStreamResource(new FileInputStream(file));
    return ResponseEntity.ok()
            .headers(headers)
            .contentLength(file.length())
            .contentType(MediaType.APPLICATION_OCTET_STREAM)
            .body(resource);
}</code>
Salin selepas log masuk

Pilihan 2: Menggunakan ByteArrayResource

Dokumentasi Spring mencadangkan menggunakan ByteArrayResource dan bukannya InputStreamResource. Menggunakan jenis sumber ini melibatkan membaca keseluruhan fail ke dalam tatasusunan bait dan mencipta sumber daripadanya. Pendekatan ini boleh memberi manfaat dalam senario tertentu, seperti prestasi yang dipertingkatkan untuk fail kecil.

<code class="java">@RequestMapping(path = "/download", method = RequestMethod.GET)
public ResponseEntity<Resource> download(String param) throws IOException {
    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>
Salin selepas log masuk

Dengan melaksanakan salah satu daripada pilihan ini, isu dengan kegagalan muat turun harus diselesaikan, membolehkan muat turun fail lancar melalui Spring Boot Perkhidmatan REHAT.

Atas ialah kandungan terperinci Mengapakah muat turun perkhidmatan Spring Boot REST saya gagal, walaupun penyemak imbas memulakan proses?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!