2013-03-14 132 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" /> 

希望這有助於!

相關問題