springboot上传excel异常报错记录

周末两天,上传excel报错。百度之后记录、

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

.......

        从异常信息来看,其实不难理解,就是上传文件的临时目录失效了,百度以后确实如此。但是为什么过完年回来目录就突然失效了呢?

        继续查询相关资料后了解到,springboot启动时会创建一个用于上传文件的临时目录,而系统会在10天后自动清除该目录。

解决方法:

1、重启服务,重新生成目录;

2、手动创建该目录;

3、在启动服务的main方法中,添加以下代码,指定上传文件的目录:

@Bean

MultipartConfigElementmultipartConfigElement() {

MultipartConfigFactory factory =new MultipartConfigFactory(); 

factory.setLocation("/data/apps/temp"); 

return factory.createMultipartConfig();

}

4、在应用的配置文件中添加以下配置,原理同3:

server:

    tomcat:

        basedir: /data/apps/temp

        实践证明,以上方法都没有解决我的问题...

        接着,我进入到服务器的tmp目录,发现里面已经创建了多个tomcat的临时文件,看日期应该是我多次重启产生的。那么正常情况下,解决方法1应该已经生效了(虽然不能永久性解决这个问题),为什么还是报异常呢?令人蛋疼的是,新创建的临时目录的端口都是8491,就是我重启的服务的端口,但是异常中的临时目录端口是8769,而8769正是zuul网关的端口。于是,我在zuul的配置文件里加上了解决方法4的配置信息,果然就好了...



作者:zero_c069
链接:https://www.jianshu.com/p/cfbbc0bb0b84
來源:简书
根据提供的引用内容,springboot配置接口文档报错的问题可以通过以下两种方式解决。 首先,在es的配置类中使用@PostConstruct注解进行初始化设置。具体代码如下: ``` @Configuration public class ElasticSearchConfig { @PostConstruct void init() { System.setProperty("es.set.netty.runtime.available.processors", "false"); } @Bean public TransportClient esClient() throws UnknownHostException { Settings settings = Settings.builder() .put("cluster.name", "xunwu") .put("client.transport.sniff", true) .build(); @SuppressWarnings("resource") TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.111.132"), 9300)); return client; } } ``` 其次,如果第一种方式还是不行,可以在启动main函数中设置系统属性。具体代码如下: ``` @SpringBootApplication public class App { public static void main(String[] args) { System.setProperty("es.set.netty.runtime.available.processors", "false"); SpringApplication.run(App.class, args); } } ``` 以上两种方法都可以解决springboot配置接口文档报错的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [springboot整合es启动报错的问题](https://blog.csdn.net/zhangcongyi420/article/details/88617660)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [springBoot集成Swagger报错处理](https://blog.csdn.net/King_3123/article/details/125651813)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值