一、该问题的重现步骤是什么?
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
这个帖子有相关的配置,你有没有试过:https://www.zhangbj.com/p/474.html
如果都不行的话,到bladex私服发一个issue,记录下bug,如果可以的话,在本贴回复下是用哪个方法解决的。根据帖子提示,优先使用最后一种测试
根据你群里的回复:bladex的oss和本地上传都没用临时目录上传,用不到这个机制。
为啥你说用不到这个机制呢?用不到为啥还错出现这个错误?希望得到你的回复
扫一扫访问 Blade技术社区 移动端