【BUG】MultipartFile File has already been moved解决方案

本文介绍在Spring MVC框架中使用multipartFile进行文件上传时遇到的MultipartFile has already been moved异常及其解决办法。主要原因是maxInMemorySize参数设置不当导致文件在内存中不可用而引发异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景:

      在springMVC框架中,针对文件上传来说multipartFile.transferTo方法的效率是较高的。但是在使用中往往会遇到MultipartFile File has already been moved这个问题,这是由于maxInMemorySize参数默认是10K,大于这个大小的文件会放到临时目录 当你读取的时候 判断的avaliable参数是false  因为已经不在内存里了 所以会报异常 所以一般你超过10K就挂了。

解决方案:

       修改maxInMemorySize参数。

<!-- 文件上传相关 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--one of the properties available;the maximum upload size in bytes 100M-->
        <property name="maxUploadSize" value="104857600"/>
        <property name="maxInMemorySize" value="10240000" />  
    </bean>

MultipartFile是Spring框架中用于接收上传文件的接口。如果你想将MultipartFile转换为File对象,可以尝试以下几种方法: 方法一: 引用中的代码展示了将MultipartFile转换为File的方法。你可以使用`MultipartFile`的`transferTo()`方法将文件内容写入一个新建的File对象中,如下所示: ```java MultipartFile multipartFile = ... ; // 从请求中获取MultipartFile对象 File file = new File("path/to/save/file"); multipartFile.transferTo(file); ``` 请注意,你需要替换`path/to/save/file`为你希望保存文件的实际路径。 方法二: 引用中的代码展示了另一种将MultipartFile转换为File的方法。这种方法使用了`File.createTempFile()`来创建一个临时文件,然后使用`transferTo()`方法将MultipartFile的内容写入临时文件中,如下所示: ```java MultipartFile multipartFile = ... ; // 从请求中获取MultipartFile对象 File file = null; try { String originalFilename = multipartFile.getOriginalFilename(); String[] filename = originalFilename.split("\\."); file = File.createTempFile(filename123 #### 引用[.reference_title] - *1* [MultipartFileFile](https://blog.youkuaiyun.com/Aoutlaw/article/details/88708379)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* *3* [MultipartFileFile的几种方式](https://blog.youkuaiyun.com/qq_42383970/article/details/120201524)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值