MultipartFile每次都返回null

时间:2013-03-14 11:16:41

标签: java spring-mvc http-request-parameters

我正在使用此代码将图像文件发布到我的控制器,但我总是得到文件正文部分的空值。

@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;
}

任何人都可以帮忙吗?

3 个答案:

答案 0 :(得分:4)

当您使用multipart时,您的表单字段会包含在request Stream中。因此,您必须检查它们是否为form fields

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

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 
                    }
                }
            }

答案 1 :(得分:0)

首先请发布更多代码然后我们可以找到更多,其次我认为问题是你的形式。如果您使用Spring mvc上传文件,您的表单应如下所示:<form action="your url" method="post" enctype="multipart/form-data">注意 enctype ,它让Spring DispatchServlet知道您要上传文件。你也应该检查一下你在配置文件中配置MutilPartFileResovler

答案 2 :(得分:0)

对于那些仍在努力解决这个问题的人来说,这对我有用。 以前我的input字段定义为,

<input type="file" />

我使用上面的行获取了null文件,但是当我添加name="file"时,一切正常!

<input type="file" name="file" />

希望这有帮助!