首页 > Web开发 > 详细

SprinMVC中文件上传只在内存保留一份拷贝

时间:2018-10-16 14:16:12      阅读:227      评论:0      收藏:0      [点我收藏+]

 

背景:web项目里经常有上传文件的模块,某些特殊场景下,上传文件的人不希望在服务器留存一份原始文件,这个时候就需要把文件放到内存里了。

 

笔者调试了一下springmvc里面的CommonsMultipartFile,会在当前Servlet容器里保留一份原始文件,虽然是临时的,但是也可以通过程序监控目录消息等方式获得文件的拷贝。

技术分享图片

为了保密需要,追踪了一下CommonsMultipartFile的文档,通过以下文章找到了答案 Will Spring hold contents in memory or stores in the disk?

如果客户端存储的文件默认10K(10240 bytes)之内文件则会放到内存中,大于10K的将会以临时文件方式存放。

解决方法:修改配置文件添加maxInMemorySize即可

技术分享图片

以上是默认,笔者这里设置默认10M文件放在内存里,不建议太大,会影响内存开销,导致web应用或者其他程序内存不够用。

修改后

 <!-- 使用多部分解析器上传文件的配置文件 -->  
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
       <property name="defaultEncoding" value="UTF-8"></property>
       <property name="maxUploadSize" value="10240000000"/>
       <property name="maxInMemorySize" value="10485760"/>
    </bean>

经过以上修改,上传文件小于10M就不会在存到临时文件里了。

SprinMVC中文件上传只在内存保留一份拷贝

原文:https://www.cnblogs.com/passedbylove/p/9797677.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!