easyexcel 导入导出

发布于:2024-12-05 ⋅ 阅读:(102) ⋅ 点赞:(0)

Caused by: java.lang.IllegalStateException: java.nio.file.NoSuchFileException: /tmp/917b5799-7080-4e92-a191-11373632589e/poifiles/poi-sxssf-sheet5775847353710241119.xml
        at org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:696)
        at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:273)
        at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:237)
        at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:212)
        at org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:187)
        at com.alibaba.excel.util.WorkBookUtil.createWorkBook(WorkBookUtil.java:40)
        at com.alibaba.excel.context.WriteContextImpl.<init>(WriteContextImpl.java:96)
        ... 135 common frames omitted
 

原因分析:
在 Linux 系统中,Spring Boot 应用以 java -jar 命令启动时,会在操作系统的 /tmp 目录下生成一个 tomcat(或 undertow )临时目录,上传的文件先要转换成临时文件保存在这个文件夹下面。由于临时 /tmp 目录下的文件,在长时间(10天)没有使用的情况下,系统执行了 tmp 目录清理服务(systemd-tmpfiles-clean.service),导致 /tmp/undertow…8090 文件被清理,然而在上传的时候,undertow 服务器需要创建/tmp/undertow…8090/undertow…upload 临时文件,但是调用 Files.createFile(…) 的时候就会发现找不到父目录,才导致了以上的错误。

解决方案:
在项目中 applicaiton.yml 中添加配置 :
spring:
servlet:
multipart:
location: /home/tmp
手动指定目录后,必须保证该目录存在,并有读写的权限,创建该目录 mkdir -p /home/tmp

                        
原文链接:https://blog.csdn.net/qq_41814311/article/details/127191377