一、该问题的重现步骤是什么?
1. 文件服务部署在Centos7上,运行一段时间后,再次上传文件时报错,只能重启文件服务才能正常上传。
2. 代码版本为bladex2.4.0
3.相关错误日志见附件
在群里咨询过这个问题,反馈说:这是springboot的机制,不是bug。另外bladex的oss和本地上传都没用临时目录上传,用不到这个机制。你如果需要的话,按照帖子内的解决办法配置一下就行
目前我使用的就是bladex的oss进行文件上传,为什么还会有这个错误,很尴尬
二、你期待的结果是什么?实际看到的又是什么?
文件上传成功,实际上传失败
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
bladex2.4.0,centos7
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
20210120更新补充:
修改生效了会尝试在 location: /data/app 路径下创建 undertow数字upload 的 上传临时文件(不是文件夹!!!!)。
因为有了配置不会在尝试创建 undertow.数字.数字 文件夹了。
未配置locantion时上传文件路径:
会创建 Undertow.数字.数字 的文件夹,在之下再创建 undertow数字upload 临时文件。
借用本帖楼主的报错日志,之前没有配置location的时候,上传文件的路径是: java.lang.RuntimeException: java.nio.file.NoSuchFileException: /tmp/undertow.2592299692229034893.8010/undertow4068960144003850988upload 首先是/tmp/ 之后是 一个Undertow.数字.数字 的文件夹 / 最后是 undertow数字upload 的临时文件
配置locantion时上传文件路径:
不会创建Undertow.数字.数字 的文件夹,会直接在location路径下创建 undertow数字upload 临时文件。
因为测试时候我先删掉了 /data/app 的 app文件夹。看到报错信息如下:
org.springframework.web.util.NestedServletException: Request processing failed;
nested exception is java.lang.RuntimeException: java.nio.file.NoSuchFileException: /data/app/undertow8200788795301362756upload
可以看到是没有 之前 Undertow.数字.数字 的文件夹了。应该是指认location 路径后不会再创建了。
另外上传完 没有捕获到临时文件的创建痕迹,可能用完就删掉了。我没有本地debug断点跟踪,只是根据删掉 location路径看报错信息来找的临时文件创建路径。
如果希望可以更有条理的管理上传文件夹路径,可以考虑修location 追加一级业务名称路径。(这么考虑是我不了解上传文件名的生成规则,同一台服务器上多个不同业务,并发上传时临时文件会不会重名导致意外错误。)
location:/data/app/业务名
20210119更新:
参考1L提供的帖子,
修改在(blade-service 下)自己业务模块 src/main/resource/application-dev/prod/test.yml配置文件
添加上传路径 location(全路径:spring.servlet.multipart.location) 属性。避免不配置时,linux环境下使用默认的/tmp路径
spring: servlet: multipart: ## 以下 配置可无视,根据自己需求修改 ## enabled: true file-size-threshold: 0 #单个文件的大小 max-file-size: 20MB ##请求中所有文件的大小 max-request-size: 30MB ## 以上 配置可无视,根据自己需求修改 ## # 上传文件保存路径,如果没有配置会在 linux /tmp目录下存在被删掉可能性。导致上传文件功能失败报错。 location: /data/app
注意:该路径 /data/app 不会自动创建!如果路径不存在记得手动创建下!
location: /data/app
20210118:同样遇到这个问题。使用的Bladex 2.7.0.Release版本。上线时候一切OK 10多天后上传有这个错误。
Centos服务器使用jar方式部署的。
bladex-tools>blade-core-boot->blade-boot.yml配置文件里可以配置上传路径。但是没有配置。
servlet: multipart: max-file-size: 256MB max-request-size: 1024MB
扫一扫访问 Blade技术社区 移动端