我想创建一个function
,以从运行Spring Boot
应用程序的服务器获取最新的Excel数据。但是,我的方法返回的是从启动Tomcat
时开始的旧数据。请提出实现它的方法。
我的代码:
@GetMapping("/download")
public ResponseEntity download() {
String fileName = "/sample.xlsx";
InputStream is = this.getClass().getResourceAsStream(fileName);
try {
return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; fileName=" + fileName) .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(IOUtils.toByteArray(is));
} catch (IOException e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
2条答案
按热度按时间eoigrqb61#
请在下面找到原因,因为它没有提供最新的Excel工作表。
1.缓存问题:Sping Boot 可能会缓存Excel工作表数据。您可以尝试禁用缓存以查看是否解决了这个问题,您可以通过添加@cachable(false)来返回Excel工作表数据。
1.浏览器缓存:您的浏览器可能正在缓存Excel工作表数据。您可以尝试清除浏览器缓存或在专用浏览器中打开Excel工作表。
1.服务器缓存:你的服务器可能缓存这Excel工作表数据.你可以尝试重新启动这服务器或者你可以清理它的缓存.
1.确保Excel工作表本身正在更新。如果工作表中的数据没有更新,spring Boot 将继续返回旧数据。
yacmzcpb2#
使用
File file = new File("sample.xlsx");
解决问题这是因为它可以立即加载文件,而其他fileReader方法只从类路径加载资源一次。