千家信息网

SpringBoot文件上传临时目录找不到怎么解决

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要讲解了"SpringBoot文件上传临时目录找不到怎么解决",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SpringBoot文件上传临时目
千家信息网最后更新 2026年10月31日SpringBoot文件上传临时目录找不到怎么解决

这篇文章主要讲解了"SpringBoot文件上传临时目录找不到怎么解决",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"SpringBoot文件上传临时目录找不到怎么解决"吧!

SpringBoot文件上传临时目录问题

我相信大家在把项目部署到服务器上面时候都会遇到这样一个问题:

org.springframework.web.multipart.MultipartException: Could not parse multipart servlet
request;nested exception is java.io.IOException: The temporary upload location
[/tmp/tomcat.1337767218595042057.80/work/Tomcat/localhost/ROOT] is not valid
org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipart
HttpServletRequest.java:112) org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.

这个问题也是困惑我很久,网上找了都没有找到解决方案,唯一解决办法就是指定临时目录到服务器就ok.不废话啦上代码。

1、前台肯定是搭配multipart/form-data springMvc这个组件上传滴

2、后台代码 参考就行了我这里用了SFTP上传文件到云服务器

文件上传工具参考这篇文章

//www.jb51.net/article/216456.htm

@Log("文件上传")@ResponseBody@PostMapping("/upload")@RequiresPermissions("common:companyremittance:upload")R upload(@RequestParam("file") MultipartFile file,@RequestParam("arrys") String arrys, @RequestParam("commpanyname")         String  commpanyname,@RequestParam("remittancedate") String  remittancedate,HttpServletRequest request) throws ParseException, IOException {    //先上传到图片服务器上面然后在读取信息    int prostatusId=0;    if(StringUtils.isEmpty(arrys)){        return R.error("导入失败");    }    String oldName = file.getOriginalFilename();    //使用IDUtils工具类生成新的文件名,新文件名 = newName + 文件后缀    String newName = IDUtils.genImageName();    newName = newName + oldName.substring(oldName.lastIndexOf("."));    SftpUtils ft = new SftpUtils();    //通过SFtoInfo  参数连接传入参数即可    Session s = ft.getSession(SFTPInfo.SFTP_REQ_HOST,SFTPInfo.SFTP_DEFAULT_PORT, SFTPInfo.SFTP_REQ_USERNAME,SFTPInfo.SFTP_REQ_PASSWORD);    Channel channel = ft.getChannel(s);    ChannelSftp sftp = (ChannelSftp)channel;    Boolean upload = ft.uploadFile(sftp,SFTPInfo.basePath, file.getInputStream(),newName);    SaveDO saveDO=new SaveDO();    if(upload){        //上传成功关闭信息        saveDO.setFileurl(SFTPInfo.baseUrl+ "/" + newName);        saveDO.setFilename(oldName);        saveDO.setFilesize(String.valueOf(file.getSize()));        saveDO.setImportdate(new Date());        saveDO.setIpaddr(IPUtils.getIpAddr(request));        saveDO.setUsername(ShiroUtils.getUser().getUsername());        saveDO.setSftpupurl("/usr/fjl/file");  //这里是文件路径上传服务器里面路径 记得chomd  777        saveDO.setNewfilename(newName);        saveService.save(saveDO);        //根据proentId查询项目的状态        CompanyremittanceDO companyremittanceDO1=new CompanyremittanceDO();        companyremittanceDO1.setProparentid(Long.valueOf(arrys));        CompanyremittanceDO aDo = companyremittanceService.getProjectStatus(arrys);        if (aDo != null) {            companyremittanceDO1.setProstatus(aDo.getProstatus());        } else {            //自增状态++1            prostatusId = companyremittanceService.getMaxProStatus();            prostatusId++;            companyremittanceDO1.setProstatus(prostatusId);        }        companyremittanceDO1.setRemittancename(commpanyname);        companyremittanceDO1.setRemittancedate(getDate(remittancedate));        String fileName = file.getOriginalFilename();        fileName = FileUtil.renameToUUID(fileName);        try {            boolean flag=  ExcelUtil.batchImport(fileName,file,companyremittanceService,companyremittanceDO1);            if(flag){              if(ft.delete(saveDO.getSftpupurl(),saveDO.getNewfilename(),sftp)){                  ft.closeAll(sftp, channel, s); //关闭连接               return    R.ok("导入成功");              }else{                  return R.ok("数据导入成功!服务器数据文件没有删除!");              }            }        } catch (Exception e) {            e.printStackTrace();            return R.error();        }        return R.error();    }else {        return R.error("上传error");    }}

其中/usr/fjl/file 是服务器路径的地址

3、那么问题来了现在这样肯定是不能解决上传问题滴

(重点配置)新增一个配置 :这个代码很关键,这个就是指定临时上传路径的临时地址(本地也会报错)

@BeanMultipartConfigElement multipartConfigElement() {   MultipartConfigFactory factory = new MultipartConfigFactory();   //factory.setLocation("D:/tmp"); 本地用      factory.setLocation("/home/temp"); //服务器用   return factory.createMultipartConfig();}

加上这个就好了 文件就可以上传成功,如果跨域还得到nginx 里面配置和代码配置.

SpringBoot更改上传文件临时目录

@Bean    MultipartConfigElement multipartConfigElement() {        MultipartConfigFactory factory = new MultipartConfigFactory();        factory.setLocation(tmepPath);        return factory.createMultipartConfig();    }

再Application.java里增加上述代码。

感谢各位的阅读,以上就是"SpringBoot文件上传临时目录找不到怎么解决"的内容了,经过本文的学习后,相信大家对SpringBoot文件上传临时目录找不到怎么解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

文件 服务 目录 服务器 问题 成功 代码 路径 配置 就是 学习 内容 参数 地址 工具 数据 文件名 状态 篇文章 项目 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网政务服务 美国互联网科技巨头监管 北京互联网科技 唐信互联网科技 互联网女皇 腾讯科技 互联网科技小额贷款 广州善班互联网科技 狮子座互联网科技培训 互联网科技的未来发展 互联网科技公司招聘 湖南洣水互联网科技有限公司扣款 科技与互联网哪个更好 广州恒生互联网科技有限 链环科技传统企业怎么转型互联网 长沙茂晟互联网科技有限公司 福建互联网展示科技馆设计 互联网高科技行业有哪些企业 互联网科技新闻 陕西九四连强互联网科技有限公司 陕西彩京云互联网科技有限公司 南京欣网互联网络科技 九亚互联网科技 哈尔滨新华互联网科技学院 现代互联网科技股 河南住房之家互联网科技 本届互联网大会上的黑科技 银川新华互联网科技学校是国营吗 互联网领先科技活动 瑞安市蟠桃会互联网科技有限公司 武汉亿视互联网科技有限公司
0