MultipartFile上传文件报错找不到文件

org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.lang.RuntimeException: java.nio.file.NoSuchFileException: /tmp/undertow.20000.5999478773788782106/undertow2183559635408955972upload

在 Linux 系统中,SpringBoot 应用以 java -jar 命令启动时,会在linux的 /tmp 目录下生成一个 tomcat或 undertow临时目录,上传的文件先要转换成临时文件保存在这个文件夹下面。由于临时 /tmp 目录下的文件,在长时间(10天)没有使用的情况下,被系统自动清理了,然而在上传的时候,找不到目录所有报错了。

解决方法

(1)修改上传临时文件路径

spring:
  servlet:
    multipart:
      location: /data/tmp

(2)添加启动参数,修改java临时文件路径,此目录要提前创建好

-Djava.io.tmpdir=/www/wwwroot/tmp

比如

java -Djava.io.tmpdir=/www/wwwroot/tmp -jar. test.jar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你在使用 MultipartFile 转换为 FileInputStream 的方法时遇到了系统不到指定的文件的错误,有可能是以下原因导致的: 1. 指定的文件路径错误,导致转换时不到文件。请检查你的文件路径是否正确。如果是相对路径,请确保相对路径是相对于程序的当前工作目录而非相对于项目目录的。 2. MultipartFile 传递的文件名不正确,导致转换时不到文件MultipartFile 的 getOriginalFilename() 方法获取的是上传的文件名,而不是文件在服务器上的路径和文件名。如果你想要使用 MultipartFile 转换为 FileInputStream,需要先将上传的文件保存到服务器上,然后再使用 FileInputStream 进行读取。 下面是一个示例代码,演示了如何使用 MultipartFile文件保存到服务器上,然后使用 FileInputStream 进行读取: ```java @PostMapping("/upload") public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException { String fileName = file.getOriginalFilename(); File destFile = new File("/path/to/save", fileName); file.transferTo(destFile); FileInputStream inputStream = new FileInputStream(destFile); // ... return "upload success"; } ``` 其,`/path/to/save` 是指你想要保存文件的路径。这段代码将上传的文件保存到指定的路径下,然后使用 FileInputStream 进行读取。 如果以上解决办法都无法解决你的问题,请提供更多的信息,比如你的具体代码和报错信息等,这样我们才能更好地帮助你解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值