【问题标题】:MultipartFile returns null every timeMultipartFile 每次都返回 null
【发布时间】:2013-03-14 11:16:40
【问题描述】:

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

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

有人可以帮忙吗?

【问题讨论】:

  • 为什么不用文件对象填充命令 bean?您使用的是哪个 Spring 框架?版本 3 或更低版本在上传多个文件时有一个problem

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


【解决方案1】:

当您使用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 
                    }
                }
            }

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      <input type="file" />
      

      我在上面的行中得到了空文件,但是当我添加 name="file" 时一切正常!

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

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 2017-10-07
        • 1970-01-01
        • 2016-05-22
        • 1970-01-01
        • 2022-09-27
        • 2012-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多