spring-boot-demo icon indicating copy to clipboard operation
spring-boot-demo copied to clipboard

190213-SpringBoot文件上传异常之提示The temporary upload location xxx is not valid | 一灰灰Blog

Open liuyueyi opened this issue 4 years ago • 5 comments

http://spring.hhui.top/spring-blog/2019/02/13/190213-SpringBoot%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E5%BC%82%E5%B8%B8%E4%B9%8B%E6%8F%90%E7%A4%BAThe-temporary-upload-location-xxx-is-not-valid/

SpringBoot搭建的应用,一直工作得好好的,突然发现上传文件失败,提示org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload loc

liuyueyi avatar Sep 03 '19 10:09 liuyueyi

有一个问题 解决问题中,单独执行方法2或方法3,不执行方法4还是没有用,方法4是必须的吧. 不然linux还是会将目录删除,删除后springboot会因为做了配置而在目录不存在的情况下,自行创建目录吗

forecloud avatar Dec 03 '19 04:12 forecloud

@forecloud 有一个问题 解决问题中,单独执行方法2或方法3,不执行方法4还是没有用,方法4是必须的吧. 不然linux还是会将目录删除,删除后springboot会因为做了配置而在目录不存在的情况下,自行创建目录吗

执行2,3重新定义保存的路径的时,不要指定在/tmp目录下面即可;上面只是一个简单的示例case

liuyueyi avatar Dec 03 '19 06:12 liuyueyi

您好,有一个地方不明白。 文中提到:为什么要缓存文件,因为流取一次消费之后,后面无法再从流中获取数据,所以缓存方便后续复用; 这个怎么理解,文章中说后面会详细说明,没看到。望详细说说,谢谢

pengjianchar avatar May 04 '21 08:05 pengjianchar

@pengjianchar 您好,有一个地方不明白。 文中提到:为什么要缓存文件,因为流取一次消费之后,后面无法再从流中获取数据,所以缓存方便后续复用; 这个怎么理解,文章中说后面会详细说明,没看到。望详细说说,谢谢

简单理解,普通的io流,一次性的,读一次之后流的数据清空,没法支持重复读取;为了解决这个问题,本地文件缓存流数据,可以实现重复读取

其次考虑断点续传等姿势的支持,也是存本地文件;不知道老哥的疑问点是否是这个

liuyueyi avatar May 06 '21 07:05 liuyueyi

@liuyueyi

@pengjianchar 您好,有一个地方不明白。 文中提到:为什么要缓存文件,因为流取一次消费之后,后面无法再从流中获取数据,所以缓存方便后续复用; 这个怎么理解,文章中说后面会详细说明,没看到。望详细说说,谢谢

简单理解,普通的io流,一次性的,读一次之后流的数据清空,没法支持重复读取;为了解决这个问题,本地文件缓存流数据,可以实现重复读取

其次考虑断点续传等姿势的支持,也是存本地文件;不知道老哥的疑问点是否是这个

主要是我有个这样的疑惑,不知道这样表达对不对。 之前有一个项目,有一个功能是需要通过web上传2G以上的大文件。当时发现文件从开始上传到出现在上传目录里,时间非常长。如果直接用ftp软件传到上传目录里,时间可以节省接近一半。后面开始研究,就发现是因为上传文件tomcat会先缓存到了临时目录,上传完了,然后才会调用我编写的文件保存代码,从临时目录拷贝到上传目录,也就是实际上我们保存文件的代码,是直接从缓存目录中读取文件,并不是读取上传的文件流,但java代码中拷贝文件的时间非常长,对比直接在操作系统下用copy命令的速度,速度慢了一倍不止。所以当时就觉得tomcat缓存功能比较鸡肋。我就想,为什么tomcat不能直接把文件就保存在上传目录吗?非要弄一个缓存目录先存着?所以我一直对缓存目录这个事情,比较难理解。不清楚为什么tomcat要这么设计。 比如像一般的ftp软件,他就是直接上传到目录里,不会经过缓存目录这样一个过渡。

pengjianchar avatar May 07 '21 09:05 pengjianchar