Java Spring Boot Controller 多文件下载实现:使用 if 语句控制多个 Excel 文件下载
在 Java Spring Boot 的 Controller 层,使用 if 语句可以实现多个 Excel 文件的下载功能。假设有两个 Excel 文件需要下载,可以在 Controller 层的 action 方法中使用 if 语句实现多个文件下载的逻辑。
以下代码示例展示了如何使用 if 语句控制多个 Excel 文件下载:
@RequestMapping(value = "/download", method = RequestMethod.GET)
public void downloadExcel(HttpServletRequest request, HttpServletResponse response) throws IOException {
String fileName1 = 'file1.xlsx';
String fileName2 = 'file2.xlsx';
String filePath1 = "/path/to/file1.xlsx";
String filePath2 = "/path/to/file2.xlsx";
if (StringUtils.isNotBlank(filePath1) && StringUtils.isNotBlank(fileName1)) {
File file1 = new File(filePath1);
if (file1.exists()) {
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName1, "UTF-8"));
try (OutputStream outputStream = response.getOutputStream();
FileInputStream fileInputStream = new FileInputStream(file1)) {
byte[] buffer = new byte[1024];
int len;
while ((len = fileInputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, len);
}
outputStream.flush();
}
}
}
if (StringUtils.isNotBlank(filePath2) && StringUtils.isNotBlank(fileName2)) {
File file2 = new File(filePath2);
if (file2.exists()) {
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName2, "UTF-8"));
try (OutputStream outputStream = response.getOutputStream();
FileInputStream fileInputStream = new FileInputStream(file2)) {
byte[] buffer = new byte[1024];
int len;
while ((len = fileInputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, len);
}
outputStream.flush();
}
}
}
}
在上述代码中,首先定义了两个 Excel 文件的文件名和文件路径,然后使用 if 语句判断文件是否存在,并根据文件存在与否来设置 Response 的属性和输出流的内容。如果只有一个文件需要下载,可以直接去掉一个 if 语句。
总结:
通过 if 语句控制多个 Excel 文件的下载,可以根据实际需求灵活地实现不同文件的下载逻辑。使用该方法可以有效地提高代码的可读性和可维护性。
原文地址: https://www.cveoy.top/t/topic/oh0e 著作权归作者所有。请勿转载和采集!