前端:
我这里js已经做了文件类型判断,保证都是图片类型
<form method="post" th:action="@{/imgs/addImg}"
enctype="multipart/form-data">
<!-- 注意enctype="multipart/form-data -->
<a href="javascript:;" class="a-upload">
<input type="file" name="myFile" id="myFile" multiple="multiple"/>点击这里上传文件
</a>
<input type="submit" name="Images" onclick="addImg()">提交</input>
<br>
若是只上传一个图片
//获取上传的图片并保存
@PostMapping("/imgs/addImg")
@ResponseBody
public String imagesAddMethod(@RequestParam("myFile") MultipartFile multipartFile ) throws IOException {
System.out.println("文件的名字: " + multipartFile.getOriginalFilename());
System.out.println("文件的输入流" + multipartFile.getInputStream());
InputStream inputStream = multipartFile .getInputStream();
File files = new File("D:/1.jpg");
//file路径根据自己的情况定义
OutputStream os = null;
try {
os = new FileOutputStream(files);
byte buffer[] = new byte[4 * 1024];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
}finally {
os.close();
}
return "上传成功";
}
上传多个图片
//获取上传的图片并保存
@PostMapping("/imgs/addImg")
@ResponseBody
public String imagesAddMethod(@RequestParam("myFile") List<MultipartFile> lists) throws IOException {
for (int i = 0; i < lists.size(); i++) {
System.out.println("文件的名字: " + lists.get(i).getOriginalFilename());
System.out.println("文件的输入流" + lists.get(i).getInputStream());
InputStream inputStream = lists.get(i).getInputStream();
File files = new File("D:/"+i+".jpg");
//file路径根据自己的情况定义
OutputStream os = null;
try {
os = new FileOutputStream(files);
byte buffer[] = new byte[4 * 1024];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
}finally {
os.close();
}
}
return "上传成功";
}
要用上述代码,只需要修改:
- @PostMapping的路径
- @ResponseBody不需要的话可以去掉,如进行页面转发或重定向
- RequestParam(“myFile”) 里的值与前端的属性保持一致
- File files的值根据自己的需求更改,也许是来自于数据库
- … …