文件上传时tomcat临时文件的坑

/ 默认分类 / 0 条评论 / 912浏览

在使用springboot上传文件的时候,由于,文件上传需要先作为零时文件进行保存,对于保存的这个目录,我们时可以直接配置的: tomcat.basedir 之前在使用这样的功能时都是正常上传,但是这次由于代码中使用异步多线程调用,导致响应结束之后,子线程还没有结束,但是此时tomcat接收到请求已经结束所以临时文件已经删除,但是子线程中需要使用到该文件的输入流,所以直接保存FileNotFoundException

        if (files.isEmpty()) {
            return R.fail().message("文件为空");
        }
        new Thread(() -> {
            StringBuilder fileNames = new StringBuilder("");
            for (MultipartFile file : files) {
                fileNames.append(file.getOriginalFilename()).append("&88&");
            }
            commonService.saveApplogData(fileNames,empId,date,flag);
            for (MultipartFile file : files) {
                //创建输入输出流
                InputStream inputStream = null;
                OutputStream outputStream = null;
                String path = "/filedir/app_log/";
                inputStream = file.getInputStream();
。。。。。
            }
        }).start();
        return R.ok();