我使用spring MVC和JSP。我想上传2个文件,问题是只有一个文件正在上传。以下是代码:
jsp代码:
<form id="myform" name="myform" action="/createRequest.htm" enctype="multipart/form-data" method="POST">
//form elements like textbox, checkbox
<tr>
<th class="RelReqstAllign"></th><td> (Or)<input type="file" name="fileUpload" size="50"/></td>
</tr>
<tr>
<th class="RelReqstAllign"></th><td><input type="file" name="fileUpload" size="50" /></td>
</tr>
</form>
以下是弹簧控制器代码:
@RequestMapping(value = "/createRequest", method = RequestMethod.POST)
public ModelAndView createRequest(final HttpServletRequest request,
final HttpServletResponse response,
final @ModelAttribute("spRequestDTO") SPRequestDTO dto,
final BindingResult beException,
final @RequestParam("buttonName") String buttonName,
@RequestParam CommonsMultipartFile[] fileUpload) throws IOException {
//logic
if (fileUpload != null && fileUpload.length > 0) {
for (CommonsMultipartFile aFile : fileUpload) {
System.out.println("Saving file: "
+ aFile.getOriginalFilename());
if (!aFile.getOriginalFilename().equals("")) {
try {
aFile.transferTo(new File(saveDirectory + aFile.getOriginalFilename()));
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
当我在控制器中调试时,“fileUpload”只显示一个文件,即使我上传了两个文件。
以下是Spring-mvc.xml中添加的代码
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>
答案 0 :(得分:3)
就这样做。您不需要在表单中添加超过input
标签来选择多个文件
<input type="file" name="fileUpload" size="50" multiple/>
通过点击键盘上的ctrl
选项,用户可以在系统中选择多个文件。
然后,在你的动作课上,按你的意愿做你的东西。
确保{bean}类中的fileUpload
变量为文件数组
答案 1 :(得分:2)
几周前我遇到了类似的问题,我无法让处理程序方法处理多个MultipartFiles
。作为解决方案,我注入HttpServletRequest
并将其投放到DefaultMultipartHttpServletRequest
以便能够访问所有文件。
List<MultipartFile> files = ((DefaultMultipartHttpServletRequest) request)
.getFiles("fileUpload");