如何在Spring控制器中处理来自jsp的multipart / form-data

时间:2015-02-22 16:30:37

标签: jsp spring-mvc jsp-tags

我想在我的spring @Controller中处理jsp页面的文件和复选框值,我的映射如下所示。

@RequestMapping(value = "/uploadFile/", method =  RequestMethod.POST)
@ResponseBody
public String uploadFile(HttpServletRequest request,   @RequestParam("uploadToCheck") String uploadToCheck) {

jsp页面:

Select a file to upload: <br />
<form action="/uploadFile/" method="post" enctype="multipart/form-data">
<input type="file" name="file" size="50"/>
<br /> <br />
<input type="checkbox" name="uploadToCheck" id="uploadToCheck"/>   Upload data into db
<br /> 

在我的spring控制器中,我无法使用@RequestParam获取“uploadToCheck”的值。

我调试了REST调用跟踪,如下所示。

------WebKitFormBoundary6EG9FuRGgpq4BwKj
Content-Disposition: form-data; name="file"; filename="new-xcel.xls"
Content-Type: application/vnd.ms-excel


------WebKitFormBoundary6EG9FuRGgpq4BwKj
Content-Disposition: form-data; name="uploadToCheck"

on
------WebKitFormBoundary6EG9FuRGgpq4BwKj--

有谁知道如何获得两种形式相同的输入值。应该在HttServletRequest对象或@RequestParam中访问它吗? 如果没有,那么替代解决方案是什么?

1 个答案:

答案 0 :(得分:1)

您可以在控制器上使用@RequestPart for file和@RequestParam复选框。

public String uploadFile(@RequestParam boolean uploadToCheck, @RequestPart("file") MultipartFile file) String uploadToCheck) {}

还有一件事需要记住。如果选中该复选框,则返回true。处理复选框的方法很少。看一些示例并根据您的需要使用它。我刚刚提供了如何获取文件和复选框值的选项。希望这会有所帮助。