首先需要在JSP视图方面去修改一下代码,插入如下代码:
文件:<input type="file" name="files">
<input type="file" name="files">
<input type="file" name="files"><br>
JSP这边就是Controller指向的地址改变,input type="file"会增多,除此之外其他都不会改变(包括按钮的个数也不会改变,还是只有一个就行,这一步就需要Controller那边配合做个循环,一次性把图片通过循环全部上传)
映射文件这边不需要改变什么,但是如果需要设定上传文件的大小的话,可以把一开始配置上传文件的那行代码改一下 变成这样
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSizePerFile" value="5000000"/>
</bean>
反正这个就记住id不能变,然后value的值代表了文件的大小为多少。
最后的重点,就是修改Controller,为了方便看,我重新写了一个上传多个文件的Controller方法:
@PostMapping("/uploads")
public String uploads(String username,@RequestParam CommonsMultipartFile[] files,HttpSession session){
//获取上传目录的物理路径
String path = session.getServletContext().getRealPath("/WEB-INF/upload/");
for (CommonsMultipartFile file:files){
try {
file.transferTo(new File(path, StringUtils.renameFileName(file.getOriginalFilename())));
} catch (IOException e) {
e.printStackTrace();
}
}
return "success";
}
这里把文件名字什么的反馈全部省略掉了,直接进入主题,用String来标识一个上传文件准备存放的地址,然后通过try catch方法来存放文件,这边就做一个遍历,如果CommonsMultipartFile file:files还存在,就继续上传直到上传结束。CommonsMultipartFile是系统自带的一个方法,表示与上传文件相关,还有要注意的是,在public String uploads(String username,@RequestParam CommonsMultipartFile[] files,HttpSession session){
在这里,可以看到CommonsMultipartFile后面是加了一个中括号[],一般加了中括号的都表示这个类已经不是普通的类了,它变成了一个数列,因为这里需要上传文件,所以变成了一个数列可以接纳更多的文件上传。