SpringBoot上传文件失败!

1.背景

年后放假回来一向运行很好的项目,突然间文件上传不了。看了日志报错如下

image

2.原因

在linux系统中,springboot应用服务再启动(java -jar 命令启动服务)的时候,会在操作系统的/tmp目录下生成一个tomcat*的文件目录,上传的文件先要转换成临时文件保存在这个文件夹下面。由于临时/tmp目录下的文件,在长时间(10天)没有使用的情况下,就会被系统机制自动删除掉。所以如果系统长时间无人问津的话,就可能导致上面这个问题。

3.解决

1.重启服务,临时方案:会重新生成tomcat目录,但是生产环境不建议如此操作;

2.手动创建tomcat*目录(报错不存在的目录)

  1. 添加配置类代码
/** 文件上传临时路径 */ 
@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory =newMultipartConfigFactory();
factory.setLocation("/tmp"); 
returnfactory.createMultipartConfig(); 
}

注:
注入bean方式

1.可以直接在springboot启用类里面加上面的方法

2.新建一个config类

image

扩展:

导入controller代码

@RequestMapping(value = "/importData" ,produces="application/json;charset=UTF-8")

public ResultDTO<Map<String,String>> upLoadCabinet(@RequestParam("file") MultipartFile file){

    InputStream inputStream = null;

    XSSFWorkbook xssfWorkbook = null;

    inputStream = file.getInputStream();

    xssfWorkbook = new XSSFWorkbook(inputStream);

   for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) {

        XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet);

         if (xssfSheet == null) {continue;}


   // Read the Row
    for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {

    XSSFRow xssfRow = xssfSheet.getRow(rowNum);

    if (xssfRow != null) {

        AutoCabinetImport anImport = new AutoCabinetImport();

        XSSFCell cell = xssfRow.getCell(0);

        String reason = null;

        String desc = null;

        if(xssfRow.getCell(1) != null){

            xssfRow.getCell(1).setCellType(Cell.CELL_TYPE_STRING);

            reason = xssfRow.getCell(1).getStringCellValue();

        }

        if(xssfRow.getCell(2) != null){

            xssfRow.getCell(2).setCellType(Cell.CELL_TYPE_STRING);

            desc = xssfRow.getCell(2).getStringCellValue();

        }

    }

}

详细的上传可以参考:https://blog.csdn.net/gnail_oug/article/details/80324120

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容