您的位置:首页 > 产品设计 > UI/UE

解决 Processing of multipart/form-data request failed. /upload/A.tmp (No such file or directory) 问题

2018-01-23 08:55 991 查看
使用spring boot 上传,刚开始一切正常,但过了一段时间上传文件的时候出现错误。

ERROR org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. C:\Users\hp\AppData\Local\Temp\tomcat.7007283165982469173.7102\work\Tomcat\localhost\ROOT\upload_82a53f5c_e2da_43a5_9b71_d5349d403a82_00000067.tmp (系统找不到指定的路径。)] with root cause
究竟是什么原因呢?报错信息已经说了,就是找不到路径,这个路径是tomcat临时文件的目录。

那为什么一开始又一切正常呢?而过了一段时间后就报错了?

其实这跟临时文件夹存活时间有关。如果我们不指定tomcat运行根目录,那么在sping boot 项目启动时,系统会自动创建一个项目运行临时目录,一般在\AppData\Local\Temp\
目录下。这个临时文件有自己的清理策略,会在一段时间后自动清理。所以说为什么刚开始运行一切正常,而过了一段时间之后就报找不到路径了。

网上有很多解决方案,但很多都无法真正解决,如:

第一种:修改maxInMemorySize,据说上传文件大小若小于此参数,则不会生成临时文件。所以要改小一点,然而并没有什么用。

<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8" />
<!-- 指定所上传文件的总大小不能超过2000KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
<property name="maxUploadSize" value="2048000" />
<!-- 设置在文件上传时允许写到内存中的最大值,以字节为单位计算,默认是10240 -->
<property name="maxInMemorySize" value="2048" />
</bean>第二种:修改
location
的值
这个
location
可以理解为临时文件目录,可以通过配置
location
的值,但在spring
boot下没有什么作用
/**
* 文件上传临时路径
*/
@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setLocation("/app/pttms/tmp");
return factory.createMultipartConfig();
}最终解决方案(当然也不一定就是你遇到的问题,只是我是这样解决的)
#spring boot 项目中,application.properties增加如下配置指定tomcat的基目录,否则spring boot内嵌的tomcat容器会创建一个临时目录,但是此目录有一个定期清除策略,会影响web容器资源的使用,所以指定在项目根目录创建目录
server.tomcat.basedir=./deployer/tomcat
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐