/**
* 遍历fileList
*
* @param fileList
*/
private void getFileList(List<MultipartFile> fileList) throws IOException {
for (MultipartFile multipartFile : fileList) {
//获取文件名
String fileName = multipartFile.getOriginalFilename();
//某些符号得转义
String[] strings = fileName.split("\\.");
String name = strings[0];
//查询用户
User user = /**查询**/(name);
//修改后的文件名
Long longFileName = user.getId();
String suffixName = fileName.substring(fileName.lastIndexOf('.'));
logger.info("上传的文件名为==>>{},后缀名为==>>{}", longFileName, suffixName);
//获取当前jar包所在路径,并且新建photo文件夹
String photoPath = PathUtil.getJarPath() + "\\photo";
logger.info("创建photo文件夹后的路径photoPath===>>>{}", photoPath);
File photoFile = new File(photoPath);
//检测是否存在目录
if (photoFile.getParentFile() != null) {
//新建文件夹
photoFile.mkdirs();
}
//修改后的指定路径下的完整文件名
String photoName = photoPath + "\\" + longFileName + suffixName;
logger.info("修改后的指定路径下的完整文件名,photoName===>>>{}", photoName);
//新文件名
String newFileName = longFileName + suffixName;
String photoUrl = "http://localhost:9999/image/" + newFileName;
if (longFileName != null) {
User u = selectById(longFileName);
if (u != null) {
UpdateWrapper<UserDo> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", u.getId())
.set("photoUrl", photoUrl);
// .set("photoUrl", photoName);
//将图片url存入数据库
userMapper.update(null, updateWrapper);
}
}
// 调用下面的方法
deleteFile(photoName);
Boolean bBoolean = savePicFile(photoName, multipartFile);
}
}
下面这一段是获取上传文件夹路径下面的重名文件,忽略文件后缀名(比如上传一个人的照片,但是有多种格式,上传一个新的同名文件覆盖)
还有一些bug 可以再优化,可能会空指针
private void deleteFile(String dir) {
String[] split = dir.split("\\.");
String substring = dir.substring(0, dir.lastIndexOf("\\"));
File file = new File(substring);
File[] files = file.listFiles();
for (File f : files) {
String[] sName = f.getName().substring(f.getName().lastIndexOf("\\.") + 1).split("\\.");
String[] name = dir.substring(dir.lastIndexOf("\\") + 1).split("\\.");
if (sName[0].equals(name[0])) {
f.delete();
break;
}
}
}