2013-03-14 80 views
1

我使用此代码将图像文件发布到我的控制器,但我总是得到文件正文部分的空值。MultipartFile每次都返回NULL

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

任何人都可以帮忙吗?

+1

为什么不使用文件对象填充命令bean?你在使用哪种Spring框架?上传多个文件时,版本3或更低版本具有[问题](http://stackoverflow.com/q/13686757/1037210)。 – Lion 2013-03-14 11:34:03

回答

3

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

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

0

对于那些仍在为这个问题而苦苦挣扎的人,这里是对我有用的东西。 以前我input场被定义为,

<input type="file" /> 

我得到空文件与上述行,但是当我加入了name="file"一切正常!

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

希望这有助于!

相关问题