SpringMVC文件上传 MultipartFile对象为null的可能原因

1,407 阅读1分钟

1.不满足表单上传文件的三要素

1)form表单项input类型为file

2)form提交方式为post

3)form的enctype属性是多部分表单形式enctype=“multipart/form-data”

<%--单文件上传--%>
<form method="post" action="/user/file1" enctype="multipart/form-data">
  <span>名字:</span><input type="text" name="username"><br>
  <span>文件:</span><input type="file" name="uploadFile"><br>
  <input type="submit" value="提交">
</form>

2.配置文件解析器的id有误,必须为multipartResolver

<!--配置文件上传解析器  注意此处的id是有要求的,必须为这样,否则报错-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!--上传文件总大小-->
    <property name="maxUploadSize" value="500000"/>
    <!--最大单个上传文件大小-->
    <property name="maxUploadSizePerFile" value="500000"/>
    <!--文件编码-->
    <property name="defaultEncoding" value="UTF-8"/>
</bean>

3.表单中提交文件的name属性值与服务端接收文件的MultipartFile对象名不一致

1中表单的文件name为uploadFile,控制层的接收文件的对象名也要为uploadFile

//------------------单文件上传------------------
@RequestMapping(value = "/file1")
@ResponseBody
public void file1(String username,MultipartFile uploadFile) throws Exception {
    System.out.println(username);
    //获取文件的全名称(包括后缀)
    String originalFilename = uploadFile.getOriginalFilename();
    //保存文件
    uploadFile.transferTo(new File("D:/"+originalFilename));
}