SpringBoot下载ByteArrayInputStream
时间: 2023-02-08 17:59:51 浏览: 132
在 Spring Boot 中,可以使用 org.springframework.util.StreamUtils 类中的 copyToByteArray() 方法将文件转换成 ByteArrayInputStream。
示例代码:
```
byte[] byteArray = StreamUtils.copyToByteArray(new FileInputStream("file.txt"));
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArray);
```
其中,第一行使用 StreamUtils.copyToByteArray() 方法将文件转换为字节数组,第二行使用 ByteArrayInputStream 创建一个新的字节数组输入流。
相关问题
springboot页面下载ByteArrayInputStream类的文件
可以使用 Spring Boot 的 `ResponseEntity` 类来实现页面下载 ByteArrayInputStream 类的文件。具体代码如下:
```
@GetMapping("/download")
public ResponseEntity<InputStreamResource> downloadFile() throws IOException {
byte[] data = // 获取文件的字节数组
ByteArrayInputStream bis = new ByteArrayInputStream(data);
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attachment; filename=file.txt");
return ResponseEntity.ok().headers(headers).body(new InputStreamResource(bis));
}
```
这样就可以实现文件的下载了。
springboot下载excel模版代码
以下是使用 Apache POI 库在 Spring Boot 中下载 Excel 模板的示例代码:
```java
@GetMapping("/downloadTemplate")
public ResponseEntity<InputStreamResource> downloadTemplate() throws IOException {
// 创建 Excel 工作簿
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
// 创建标题行,并设置单元格样式
Row titleRow = sheet.createRow(0);
CellStyle titleCellStyle = workbook.createCellStyle();
Font titleFont = workbook.createFont();
titleFont.setBold(true);
titleCellStyle.setFont(titleFont);
Cell titleCell = titleRow.createCell(0);
titleCell.setCellValue("姓名");
titleCell.setCellStyle(titleCellStyle);
titleCell = titleRow.createCell(1);
titleCell.setCellValue("年龄");
titleCell.setCellStyle(titleCellStyle);
titleCell = titleRow.createCell(2);
titleCell.setCellValue("性别");
titleCell.setCellStyle(titleCellStyle);
// 创建数据行,写入示例数据
Row dataRow = sheet.createRow(1);
Cell dataCell = dataRow.createCell(0);
dataCell.setCellValue("张三");
dataCell = dataRow.createCell(1);
dataCell.setCellValue(20);
dataCell = dataRow.createCell(2);
dataCell.setCellValue("男");
// 生成 Excel 文件
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
workbook.write(outputStream);
workbook.close();
// 设置响应头,告诉浏览器下载文件
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attachment; filename=template.xlsx");
// 构造 ResponseEntity,返回 Excel 文件内容
return ResponseEntity
.ok()
.headers(headers)
.contentType(MediaType.parseMediaType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
.body(new InputStreamResource(new ByteArrayInputStream(outputStream.toByteArray())));
}
```
以上代码中,我们使用 `XSSFWorkbook` 类创建了一个 Excel 工作簿,并设置了标题行和示例数据。然后,将工作簿写入 `ByteArrayOutputStream` 流中,并通过 `ResponseEntity` 返回给客户端浏览器。在响应头中设置 `Content-Disposition` 属性,告诉浏览器该文件是一个附件,需要下载保存。
阅读全文