Spring MVC文件上传出现错误:Required MultipartFile parameter 'file' is not present

在学习Spring MVC文件上传时出现了许多问题,记录在此

1.配置文件上传的解析器

首先需要在spring mvc的配置文件中(注意是spring mvc的配置文件而不是spring的配置文件:applicationContext.xml)配置:
springmvc-config.xml

<!--    文件上传bean-->
        <bean id="multipartResolver"
              class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
                <!--上传文件的最大大小,单位为字节 -->
                <property name="maxUploadSize" value="17367648787"></property>

                <!-- 上传文件的编码 -->
                <property name="defaultEncoding" value="UTF-8"></property>
        </bean>

注意:id必须是:multipartResolver

2.@RequestParam

在映射的方法中使用@RequestParam时,value需要与input中的name保持一致
例如:
Controller:

public String upload(@RequestParam(value = "file1") MultipartFile file){...}

jsp:

<input type="file" id="file1" name="file1">

3.另外

(1)form 表单中需要加上:
enctype="multipart/form-data"
(2)input 中如果加上multiple=“multiple”,即可以选择多个文件上传

<input type="file" id="file1" name="file1" multiple="multiple">

控制端使用List<MultipartFile>接收

### 解决方案 当遇到 `Required request part 'file' is not present` 的错误时,通常意味着服务器端未能接收到预期的文件部分。这可能是由于多种因素引起的,包括但不限于客户端请求配置不当、控制器方法参数设置有误或缺少必要的Multipart配置。 #### 1. 配置 Multipart 支持 为了支持文件上传功能,在应用程序属性文件 (`application.properties`) 中应添加如下配置来启用multipart解析器[^1]: ```properties spring.servlet.multipart.enabled=true spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=10MB ``` 这些设置允许应用处理最大尺寸为10MB的单个文件以及整个HTTP请求体的最大大小同样设为10MB。 #### 2. 修改 Controller 方法签名 确保用于接收文件上传请求的方法正确声明了所需的参数。对于表单数据中的文件字段名应当与前端发送的一致,并通过 `@RequestParam` 注解指明名称匹配关系[^5]: ```java @PostMapping("/upload") public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file){ if (file.isEmpty()) { return new ResponseEntity<>("Please select a file!", HttpStatus.BAD_REQUEST); } try { // 处理文件逻辑... return new ResponseEntity<>("Successfully uploaded", HttpStatus.OK); } catch (Exception e) { return new ResponseEntity<>(e.getMessage(), HttpStatus.EXPECTATION_FAILED); } } ``` 注意这里假设前端提交的数据中有一个名为 "file" 的键对应着要上传的实际文件对象;如果实际使用的不是这个名字,则需要相应调整此注解内的字符串值以保持一致。 #### 3. 客户端请求验证 确认从前端发出POST请求的方式无误,特别是Content-Type头信息应该被设定成`multipart/form-data`形式以便能够携带二进制流类型的附件内容。如果是利用Postman工具来进行调试的话,请按照下述方式操作[^4]: - 使用 POST 请求; - 设置 URL 地址指向目标API路径; - 切换Body标签页至form-data模式; - 添加 key-value 对作为表单项,其中key命名为“file”,value则选择本地磁盘上的待传输文档资源。 以上措施可以有效预防因前后端交互过程中产生的误解而导致此类异常的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值