SpringBoot 上传文件到linux服务器 异常java.io.FileNotFoundException: /tmp/tomcat.50898……解决方案

报错原因:
之前上传文件部分代码如下

压缩上传可以 普通上传在file.transferTo(fie);会报错
因为上面创建临时文件的时候执行了file.transferTo(temFile);方法 该方法执行一遍后文件流已经关闭

在网上搜了好多种办法,有的网友让改spring配置,有的让修改临时文件路径,反正试了好多都不好用…

我的解决办法是先在临时文件目录下创建该文件,然后再删除

代码如下:

			//文件名称
			String taskFileName = UUID.randomUUID() + file.getOriginalFilename();
			//文件上传路径
			uploadUrl: /usr/local/AppRun/oa/pm/filesdev/
			//临时文件存储路径(这是我的路径,也就是报错信息里的路径)
			tmpUrl: /usr/local/AppRun/oa/pm/filesdev/work/Tomcat/localhost/ROOT/
				//既然报错找不到临时文件,那就自己在目录下创建一个临时文件
				File tmpfile = new File(tmpUrl+taskFileName);
                    try {
                        file.transferTo(tmpfile);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

					//保存到服务器目录
                    File file1= new File(uploadUrl + taskFileName);
                    if(!file1.exists()){
                        //先得到文件的上级目录,并创建上级目录,在创建文件
                        file1.getParentFile().mkdir();
                        try {
                            //创建文件
                            file1.createNewFile();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
					//删除临时目录文件
                    File file2 = new File(tmpUrl+taskFileName);
                    // 如果文件路径所对应的文件存在,并且是一个文件,则直接删除
                    if (file2.exists() && file2.isFile()) {
                        file2.delete();
                    }

你可能感兴趣的:(SpringBoot,上传文件到linux服务器,异常java.io.,java压缩上传报错,上传文件到服务器报错)