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!