spring boot中如何将csv文件使用流的方式返回给浏览器呢?
下文笔者讲述springboot将csv采用流的方式返回,如下所示
实现思路: 1.引入Apache的commons-csv的jar包 2.使用CSVPrinter对象中的方法 即可将csv转换为流返回例:
1.导入pom依赖 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-csv</artifactId> <version>1.5</version> </dependency> 2 controller测试 @GetMapping("/csv") public ResponseEntity<byte[]> csv() throws Exception { CSVFormat csvFormat = CSVFormat.DEFAULT.withHeader("1", "2", "3"); File tempFile = File.createTempFile("vehicle", ".csv"); FileOutputStream fileOutputStream = new FileOutputStream(tempFile); CSVPrinter csvPrinter = new CSVPrinter(new OutputStreamWriter(fileOutputStream), csvFormat); for (int i = 0; i <88; i++) { csvPrinter.printRecord("q", "w", "e"); } csvPrinter.flush(); csvPrinter.close(); fileOutputStream.close(); FileInputStream fis = new FileInputStream(tempFile); ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] b = new byte[1024]; int n; while ((n = fis.read(b)) != -1) { bos.write(b, 0, n); } fis.close(); bos.close(); HttpHeaders httpHeaders = new HttpHeaders(); String fileName = new String("测试.csv".getBytes("UTF-8"), "iso-8859-1"); httpHeaders.setContentDispositionFormData("attachment", fileName); httpHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); ResponseEntity<byte[]> filebyte = new ResponseEntity<byte[]>(bos.toByteArray(), httpHeaders, HttpStatus.CREATED); return filebyte; }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。