Spring MVC:如果 Web 应用程序部署为 Tomcat 中的 war 文件,则上传的文件为空

Spring MVC: uploaded file is null if the web app is deployed as a war file in Tomcat

我正在为我的 Web 项目使用 Spring MVC (4.1.3)。我有以下控制器来处理上传的文件:

@RequestMapping(value={"/avatar"}, method=RequestMethod.POST) 
public String avatarPost(HttpServletRequest request, 
        @RequestParam(value = "uid", required = true) Long uid,
        Map<String, Object> map) {

    try {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest.getFile("file");
        String name = file.getOriginalFilename(); //"file" is null if deployed in a war file
        .....

    } catch (IOException ex) {
        throw new RuntimeException("upload error");
    }
}

这里是HTML:

<form method="post" action="/avatar?uid=1" enctype="multipart/form-data">
    <input type="file" name="file">
    <button name="submit">Save</button>
</form>

以上代码在Eclipse(Luna)plus Jetty(7.x)环境下运行良好。但是,如果 Web 应用程序在 war 文件中部署到 Tomcat (7.x),则 "file" 始终为空。

我上面做的有错吗?

谢谢!

已解决。我将相同的 war 文件部署到 Tomcat 6.x 并且文件上传工作正常。

Tomcat7.x一定有什么我不知道的地方。

希望这对其他人有帮助。