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一定有什么我不知道的地方。
希望这对其他人有帮助。
我正在为我的 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一定有什么我不知道的地方。
希望这对其他人有帮助。