Spring boot多文件上传
如果您还不会文件上传那么我建议您可以看看我下面的两篇文章
Spring boot使用from表单上传文件:点我查看
Spring boot使用Ajax进行文件上传:点我查看
那么我们直接开整
from表单多文件上传
先修改Java代码吧
public List<String> files(MultipartFile[] files, HttpServletRequest request){
我们返回一个list集合 接手一个数组叫files
然后根据我们之前写的
我们只需要吧数组遍历就可以了
这里就不多说了 最后我会放完整的代码
下面是HTML代码
<form action="/uploads" method="post" enctype="multipart/form-data">
<input type="file" name="files" multiple>
<input type="submit" value="提交">
</form>
一样的 我们只需要在file的input里面添加multiple即可
这样就可以多文件上传了
当然我们也可以多个控件 这个就不解释了
Ajax多文件上传
Ajax也很简单
看下面代码
var formData = new FormData();
var files=$("#file")[0];
for (var i = 0; i < files.length; i++) {
var file=files.files[i];
formData.append("file",file);
}
其实我们就是遍历了一下数组然后放到formData中即可
如果这儿看不懂的同学可以看做上面ajax文件上传
这儿我就不上传完整代码了 当然java代码是通用的
完整代码
Java代码
SimpleDateFormat sdf=new SimpleDateFormat("/yyyy-MM-dd/");
@PostMapping("/uploads")
public List<String> files(MultipartFile[] files, HttpServletRequest request){
String format = sdf.format(new Date());
String realPath = request.getServletContext().getRealPath("/img") + format;
//创建文件夹路径
File folder = new File(realPath);
//如果文件夹已经不存在那么我们就创建一下
if(!folder.exists()){
folder.mkdirs();
}
List<String> urls=new ArrayList<>();
for (MultipartFile file : files) {
String originalFilename = file.getOriginalFilename();
String newName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
try {
file.transferTo(new File(folder,newName));
String url=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+"/img"+format+newName;
urls.add(url);
} catch (IOException e) {
e.printStackTrace();
}
}
return urls;
}
HTML代码
<form action="/uploads" method="post" enctype="multipart/form-data">
<input type="file" name="files" multiple>
<input type="submit" value="提交">
</form>