码迷,mamicode.com
首页 > Web开发 > 详细

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

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

标签:src   技术   项目   文件上传   监控   hyper   val   容器   http   

 

背景: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中文件上传只在内存保留一份拷贝

标签:src   技术   项目   文件上传   监控   hyper   val   容器   http   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!