当前位置: 首页 > 编程笔记 >

解决springboot项目上传文件出现临时文件目录为空的问题

顾承平
2023-03-14
本文向大家介绍解决springboot项目上传文件出现临时文件目录为空的问题,包括了解决springboot项目上传文件出现临时文件目录为空的问题的使用技巧和注意事项,需要的朋友参考一下

最近写文件上传到服务器读取的代码,前端使用FormData上传,服务端用MultipartFile接收,自己测试了下MultipartFile对象有什么东西,结果一般属性都能出来,测试getInputStrea()方法的时候出现了以下错误,简单一看这是什么目录,从来没见过啊:

百度一番之后发现了这是临时文件存放的路径,不清楚根据什么去放在这个目录的,但是这个目录本机的确没有,linux系统下好像系统会10天清空一次,翻阅了API底下有这个

百度的时候也发现另外一个坑,spring配置的MaxInMemorySize配置决定会不会存成临时文件,超过MaxInMemorySize这个大小,则会生成一个临时文件在你的localhost文件夹下。小于这个值,则是存在内存中,不生产临时文件了,所以这个值设置小点,报错也是FileNotFoundException,注意一下

有网友建议springboot配置tomcat临时文件目录,这个方法没试,我是直接在配置类中加了一个方法,可以参考下:

@Bean
public MultipartConfigElement multipartConfigElement(){
 MultipartConfigFactory multipartConfigFactory = new MultipartConfigFactory();
 String location = System.getProperty("user.dir") + "/data/tmp";
 File file = new File(location);
 if(!file.exists()){
  file.mkdirs();
 }
 multipartConfigFactory.setLocation(location);
 return multipartConfigFactory.createMultipartConfig();
}

然后debug了下,发现getInputStream()中的path就是我设置的了:

如果设置了MaxInMemorySize大小,设置了路径还是不行,可以把MultipartFile设置为File做操作

最后说句,代码不懂得一定要看API,一下子就豁然开朗了

以上这篇解决springboot项目上传文件出现临时文件目录为空的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Django 解决上传文件时,request.FILES为空的问题,包括了Django 解决上传文件时,request.FILES为空的问题的使用技巧和注意事项,需要的朋友参考一下 用html的form上传文件时,request.FILES为空,没有收到上传来的文件,但是在request.POST里找到了上传的文件名(只是一个字符串)。 解决方法: 为form表单规定enctype属

  • [编辑]我已经将所有文件保存在一个单独的文件中,但是springboot将文件保存在临时目录中,直到上传完成,然后我才可以访问该文件

  • SpringBoot项目本地运行测试一切正常,Jar包在本地运行也正常,当打包后传到 Linux 系统上,项目启动也没有问题,但是在前端发送请求后,发生了 Caused by: java.lang.ClassNotFoundException: com.qsj.acojbackendmodel.entity.User,这个User路径是错误的 ,正常应该是:com.qsj.acoj.model.e

  • 我的laravel应用程序中出现了这个错误。Mpdf\MpdfException(E\U错误)临时文件目录“/var/www/html/。/temp/”不可写 请告诉我解决这个问题的方法。

  • tempfile 模块专门用于创建临时文件和临时目录,它既可以在 UNIX 平台上运行良好,也可以在 Windows 平台上运行良好。 tempfile 模块中常用的函数,如表 1 所示。 表 1 tempfile 模块常用函数及功能 tempfile 模块函数 功能描述 tempfile.TemporaryFile(mode='w+b', buffering=None, encoding=Non

  • 我有一个springboot项目。在远程tomcat服务器webapps目录上使用WAR包。ROOT是WAR项目,它有两个文件夹,WEB-INF和META-INF。如下所示 现在出现了一个问题,我上传的文件在项目根目录'upload-dir'目录下(您可以在下图中看到upload-dir位置)。不在WAR包中,也不在远程服务器上。我应该在远程服务器上的哪里创建这个新目录? 我使用Files.cre