美文网首页
SpringBoot上传文件失败!

SpringBoot上传文件失败!

作者: 最终幻想_5b57 | 来源:发表于2019-02-14 14:01 被阅读0次

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

相关文章

网友评论

      本文标题:SpringBoot上传文件失败!

      本文链接:https://www.haomeiwen.com/subject/hzkeeqtx.html