我有一个 Spring MVC 应用程序,当我尝试上传多部分文件时,null 值会传递到 Controller 。所有其他文本参数都正确传递,只有文件输入作为空传递。我在我的项目中包含了 MultipartResolver bean 和commons-io 以及commons-fileupload 依赖项。我已经检查过它已在浏览器的请求中传递,但未绑定(bind)在 modelAttribute 中。
这是我的观点的代码片段
<form:form method="post" enctype="multipart/form-data" action="${pageContext.request.contextPath}/profile/secure/saveIdentity" commandName="profileModel">
<span><b>Upload your passport photo</b></span>
<form:input path="passportPhotograph" type="file" id="passportPhoto"/>
</form:form>
这是我的 Controller 方法的片段
@RequestMapping(value = "/secure/saveIdentity", method = RequestMethod.POST)
public ModelAndView saveIdentity(@ModelAttribute("profileModel") @Valid ProfileModel profileModel,HttpServletRequest request){
MultipartFile photo = profileModel.getPassportPhotograph();
if(photo != null){ do something.... }
}
这是我的 ProfileModel.java 类片段
public class ProfileModel{
private MultipartFile passportPhotograph;
public MultipartFile getPassportPhotograph() {
return passportPhotograph;
}
public void setPassportPhotograph(MultipartFile passportPhotograph) {
this.passportPhotograph = passportPhotograph;
}
............
}
在我的调度程序 servlet 文件中,我声明了 MultipartResolver bean:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="99999999999"/>
</bean>
最后在我的 build.gradle 文件中添加了这些依赖项
compile('commons-io:commons-io:2.0.1')
compile('commons-fileupload:commons-fileupload:1.3.1')
毕竟它会将 null 传递给我的 Controller ,即使它包含在 HttpServletRequest 中。我应该做什么来解决这个问题。预先感谢您的帮助。
最佳答案
您需要使用@RequestMapping(value = "/secure/saveIdentity", method = RequestMethod.POST, headers = ("content-type=multipart/*"), produces = "application/json", consumes = "image/*")
.
关于java - Spring MVC 文件上传将 null 传递给 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44763698/