SpringBoot 多文件上传
参考 https://blog.csdn.net/msdengxw/article/details/80913673
控制层
@RequestMapping("/admin/toSaveMaterial")
@ResponseBody
public ResultInfo saveMaterial(Article article, MultipartHttpServletRequest request)
throws IOException{
return materialService.saveMaterial(article,request);
}
实现层
public ResultInfo<Article> saveMaterial(Article article, MultipartHttpServletRequest request)
throws IOException {
// System.out.println("材料的文章是:: "+article.getContent());
ResultInfo resultInfo = new ResultInfo();
try {
if (article.getReleaseTime() == null) {
article.setReleaseTime(new Date());
}
article.setId(UUIDUtils.getUUID());
article.setUpdateTime(new Date());
articleDao.saveAndFlush(article);
// ArticleState.id++;
Iterator<String> fileNames = request.getFileNames();
while (fileNames.hasNext()) {
//request.getFiles(fileName)方法即通过fileName这个Key, 得到对应的文件
//集合列表. 只是在这个Map中, 文件被包装成MultipartFile类型
String fileName = fileNames.next();
System.out.println(fileName);
List<MultipartFile> files = request.getFiles(fileName);
if (files.size()> 0) {
for (MultipartFile multipartFile : files) {
Material resource = new Material();
//获得文件原本的名字
String originalFilename = multipartFile.getOriginalFilename();
//获得原本文件类型(eg:.doc)
String type = originalFilename.substring(originalFilename.lastIndexOf("."));
String newName = UUID.randomUUID().toString() + type;
//获取真实路径
File path=new File(ResourceUtils.getURL("classpath:").getPath());
File upload=new File(path.getAbsolutePath(),"static/successImage/content/");
if (!upload.exists()){
upload.mkdirs();
}
String uploadPath = upload + "\\";
File file = new File(uploadPath + newName);
System.out.println(uploadPath+newName);
//将文件写入磁盘
multipartFile.transferTo(file);
//设置资源url
resource.setFilePath("/static/successImage/content/"+newName);
//设置资源类型
resource.setMaterialType(type.substring(1));
//设置资源所属文章
resource.setArticleId(article.getId());
resource.setId(UUIDUtils.getUUID());
//设置资源名称
resource.setMaterialName(originalFilename);
materialDao.save(resource);
resultInfo.setResultCode(ResultInfo.RESULT_CODE_SUCCESS);
}
}
}
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
resultInfo.setResultCode(ResultInfo.RESULT_CODE_ERROR);
}
return resultInfo;
}