Java MultipartFile每次都返回null

Java MultipartFile每次都返回null,java,spring-mvc,http-request-parameters,Java,Spring Mvc,Http Request Parameters,我使用这段代码将一个图像文件发布到我的控制器,但是我总是为文件主体部分获取一个空值 @RequestMapping(value = "/updateprofile", method = RequestMethod.POST) public @ResponseBody ResponseMsg updateProfile( @RequestHeader(value = "userid", required = false) String userid, @Reques

我使用这段代码将一个图像文件发布到我的控制器,但是我总是为文件主体部分获取一个空值

@RequestMapping(value = "/updateprofile", method = RequestMethod.POST)
public @ResponseBody
ResponseMsg updateProfile(
        @RequestHeader(value = "userid", required = false) String userid,
        @RequestHeader(value = "name", required = false) String name,
        @RequestHeader(value = "phone", required = false) int phone,
        @RequestParam(value = "file", required = false) MultipartFile file) {

    ResponseMsg responseMsg = CommonUtils.checkParam(userid, name, phone,
            file);
    if (responseMsg.getStatus().equalsIgnoreCase("True"))
        responseMsg = userService.login(name, userid);
    return responseMsg;
}

有人能帮忙吗?

当您使用
多部分
时,您的表单字段将包含在
请求流中。因此,您必须检查它们是否是
表单字段

这就是我在servlet中使用的内容,您可以对其进行适当的更改以在
springmvc
中工作

boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        if (isMultipart)
        {
            try 
            {
                List items = upload.parseRequest(request);
                Iterator iterator = items.iterator();
                while (iterator.hasNext()) 
                {
                    FileItem item = (FileItem) iterator.next();

                    if (item.isFormField()) //your code for getting form fields
                    {
                        String name = item.getFieldName();
                        String value = item.getString();
                        System.out.println(name+value);
                    }

                    if (!item.isFormField()) 
                    {
                       //your code for getting multipart 
                    }
                }
            }

使用
multipart
时,表单字段将包含在
请求流中。因此,您必须检查它们是否是
表单字段

这就是我在servlet中使用的内容,您可以对其进行适当的更改以在
springmvc
中工作

boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        if (isMultipart)
        {
            try 
            {
                List items = upload.parseRequest(request);
                Iterator iterator = items.iterator();
                while (iterator.hasNext()) 
                {
                    FileItem item = (FileItem) iterator.next();

                    if (item.isFormField()) //your code for getting form fields
                    {
                        String name = item.getFieldName();
                        String value = item.getString();
                        System.out.println(name+value);
                    }

                    if (!item.isFormField()) 
                    {
                       //your code for getting multipart 
                    }
                }
            }

首先,请张贴更多的代码,然后我们可以找到更多,其次,我认为问题是你的表格。如果您使用Spring mvc upload file,您的表单应该是这样的:
注意enctype,它让Spring DispatchServlet知道您想要上传一个文件。您还应该检查您是否在配置文件中配置了
multilpartfileresovler

首先请发布更多代码,然后我们可以找到更多,其次我认为问题在于您的表单。如果您使用Spring mvc upload file,您的表单应该是这样的:
注意enctype,它让Spring DispatchServlet知道您想要上传一个文件。您还应该检查您是否在配置文件中配置了
multilpartfileresovler

对于那些仍在努力解决此问题的人,以下是对我有效的方法。 以前我的
输入
字段定义为

<input type="file" />

希望这有帮助

对于那些仍在为这个问题挣扎的人,以下是对我有效的方法。 以前我的
输入
字段定义为

<input type="file" />

希望这有帮助

为什么不用file对象填充命令bean呢?您使用的是哪种Spring框架?在上载多个文件时,版本3或更低版本会出现问题。为什么不使用file对象填充命令bean?您使用的是哪种Spring框架?在上载多个文件时,版本3或更低版本会出现错误。