在Spring的控制器中使用MultipartFile file来接收文件,通过MultipartFile[] files接收多个文件上传。
首先添加文件上传的依赖:
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
<!-- 非必需,可简化IO操作 -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
设置一个能够选择多个文件的文件选择框,即把multiple设置成multiple:
<form method="POST" enctype="multipart/form-data" action="admin/upload">
<table>
<tr><td>File to upload:</td><td><input type="file" name="files" multiple="multiple"/></td></tr>
<tr><td></td><td><input type="submit" value="Upload" /></td></tr>
</table>
</form>
在程序中这样写:
@RestController
@RequestMapping("/admin")
public class AdminController {
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String upload(@RequestParam("files") MultipartFile[] files) {
try {
for (int i = 0; i < files.length; i++) {
FileUtils.writeByteArrayToFile(new File("e:/upload/" + files[i].getOriginalFilename()), files[i].getBytes());
}
return "ok";
} catch (IOException e) {
e.printStackTrace();
return "error";
}
}
}
其中@RequestParam("files")
表示接收表单中files键所对应的数据,是一个MultipartFile[]对象,所以可以正确地匹配到参数files数组里面。