转自:
spring boot中如何将csv文件使用流的方式返回给浏览器呢?
下文笔者讲述springboot将csv采用流的方式返回,如下所示
实现思路:1.引入Apache的commons-csv的jar包2.使用CSVPrinter对象中的方法即可将csv转换为流返回
例:
1.导入pom依赖2 controller测试 @GetMapping("/csv")public ResponseEntity org.apache.commons commons-csv 1.5 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 filebyte = new ResponseEntity (bos.toByteArray(), httpHeaders, HttpStatus.CREATED);return filebyte;}
上一篇:皇家贝蒂斯1-1赫塔费,格林伍德破僵,伊斯科救主 皇家贝蒂斯收平局 皇家贝蒂斯对战赫塔菲半全场结果
下一篇:阿森纳反击四打二,萨卡破门&热苏斯送助攻完成传射 萨卡破门助阿森纳2-1胜诺丁汉 萨卡破门阿森纳2-1再次领先利物浦