Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring MVC文件上载正在向控制器传递null_Java_Spring Mvc_File Upload - Fatal编程技术网

Java Spring MVC文件上载正在向控制器传递null

Java Spring MVC文件上载正在向控制器传递null,java,spring-mvc,file-upload,Java,Spring Mvc,File Upload,我有一个SpringMVC应用程序,当我尝试上传一个多部分文件时,一个null值被传递给控制器。所有其他文本参数都被正确传递,只有文件输入被传递为null。我已经在我的项目中包括了multipartresolverbean和commons iopluscommons fileupload依赖项。我已经检查了它是否已在浏览器的请求中传递,但它没有绑定到modelAttribute中 下面是我视图中的代码片段 <form:form method="post" enctype="multipar

我有一个SpringMVC应用程序,当我尝试上传一个多部分文件时,一个null值被传递给控制器。所有其他文本参数都被正确传递,只有文件输入被传递为null。我已经在我的项目中包括了multipartresolverbean和
commons io
plus
commons fileupload
依赖项。我已经检查了它是否已在浏览器的请求中传递,但它没有绑定到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>
这是我的ProfileModel.java类代码片段

public class ProfileModel{

    private MultipartFile passportPhotograph;

    public MultipartFile getPassportPhotograph() {
        return passportPhotograph;
    }

    public void setPassportPhotograph(MultipartFile passportPhotograph) {
        this.passportPhotograph = passportPhotograph;
    }
    ............
}
在我的dispatcher servlet文件中,我声明了MultipartResolver bean:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="99999999999"/>
</bean>

在所有这些之后,它将null传递给我的控制器,即使它包含在HttpServletRequest中。我该怎么做才能解决这个问题。提前感谢您的帮助。

您需要使用
@RequestMapping(value=“/secure/saveIdentity”,method=RequestMethod.POST,headers=(“content type=multipart/*”),products=“application/json”,consumes=“image/*”
此示例代码。点是模型中的输入标记名绑定文件。也许您需要库json和文件。ex)commons io、commons fileupload和jackson、gson用于在控制器中进行解析

HTML

<form:form method="post" enctype="multipart/form-data" action="${pageContext.request.contextPath}/profile/secure/saveIdentity">

    <span><b>Upload your passport photo</b></span>
    <form:input type="file"  name="file"/> 
</form:form>
型号

public class FileAndContentModel {

    private MultipartFile file;

    public FileAndContentModel () {
    }

     // getter, setter


}

这不是解决方案,我只是在这里键入,因为它比注释更容易阅读。请尝试最低要求,只需上传一个文件并验证是否有效

表格:


通过使用SpringWeb框架附带的StandardServletMultipartResolver解决了我的问题。但是您必须使用Servlet 3.0+版本才能工作。

仅为了测试,请删除@Valid注释,并告诉我是否更改了result@cralfaro删除有效注释后仍然会有相同的结果。我添加了一些额外的信息来验证问题可能出在哪里。我将代码简化为最低测试,以检查我们是否可以上载单个文件,而不是表单。你能检查一下是否有效吗?我给你2美分。要更改上载的最大文件大小,需要通过将以下代码添加到
@Configuration
类来配置
MultipartConfigElement
@Bean public MultipartConfigElement MultipartConfigElement(){MultipartConfigFactory=new MultipartConfigFactory();factory.setMaxFileSize(“10240KB”);factory.setMaxRequestSize(“10240KB”);返回factory.createMultipartConfig();}
<form:form method="post" enctype="multipart/form-data" action="${pageContext.request.contextPath}/profile/secure/saveIdentity">

    <span><b>Upload your passport photo</b></span>
    <form:input type="file"  name="file"/> 
</form:form>
@RequestMapping(value = "test", method = RequestMethod.POST)
public String testFormData(FileAndContentModel model) {
   // break point and check model.

   return "success";
}
public class FileAndContentModel {

    private MultipartFile file;

    public FileAndContentModel () {
    }

     // getter, setter


}
<form:form method="post" enctype="multipart/form-data" action="${pageContext.request.contextPath}/profile/secure/saveIdentity">
    <span><b>Upload your passport photo</b></span>
    <input  name="file" type="file"  id="passportPhoto"/> 
</form:form>
@RequestMapping(value = "/secure/saveIdentity", method = RequestMethod.POST)
public void saveIdentity(@RequestParam("file") MultipartFile file) {
    //please verify here if the file is null