java Sping Boot 返回旧的Excel工作表数据

fzwojiic  于 2023-04-10  发布在  Java
关注(0)|答案(2)|浏览(139)

我想创建一个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();
    }
}
eoigrqb6

eoigrqb61#

请在下面找到原因,因为它没有提供最新的Excel工作表。
1.缓存问题:Sping Boot 可能会缓存Excel工作表数据。您可以尝试禁用缓存以查看是否解决了这个问题,您可以通过添加@cachable(false)来返回Excel工作表数据。
1.浏览器缓存:您的浏览器可能正在缓存Excel工作表数据。您可以尝试清除浏览器缓存或在专用浏览器中打开Excel工作表。
1.服务器缓存:你的服务器可能缓存这Excel工作表数据.你可以尝试重新启动这服务器或者你可以清理它的缓存.
1.确保Excel工作表本身正在更新。如果工作表中的数据没有更新,spring Boot 将继续返回旧数据。

yacmzcpb

yacmzcpb2#

使用File file = new File("sample.xlsx");解决问题
这是因为它可以立即加载文件,而其他fileReader方法只从类路径加载资源一次。

相关问题