public class FileUtils {
//验证上传的文件格式是否正确
public static void verifySuffix(MultipartFile file) {
if (file == null || file.isEmpty()) {
return;
}
//得到文件的完整名字
String fileName = file.getOriginalFilename();
//截取.(不包括.)的后缀名
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
try {
//后缀名与枚举类型匹配做判断
FileFormatEnum.valueOf(suffix);
} catch (Exception e) {
System.out.println("不能上传后缀名为" + suffix + "的文件");
}
}
public static String uploadFile(String dirPath, String fileName, MultipartFile file, HttpServletRequest request) {
//验证上传文件后缀是否正确
FileUtils.verifySuffix(file);
//首先创建一个空文件夹
File targetFile = null;
String url = "";
//判定uuid是否生成了,如果没生成则用上传的文件名作为名字
if (fileName == null || fileName.isEmpty()) {
fileName = file.getOriginalFilename();
} else {
//uuid+上传文件的后缀
String allFileName = file.getOriginalFilename();
String suffix = allFileName.substring(allFileName.lastIndexOf("."));
fileName = fileName + suffix;
}
//获取实际路径
String path = request.getSession().getServletContext().getRealPath(dirPath);
//获取文件夹路径
File fileDir = new File(path);
//如果文件夹不存在则创建对应的文件夹
if (!fileDir.exists() && !fileDir.isDirectory()) {
fileDir.mkdirs();
}
//新的图片,现在磁盘里面是没有东西的
targetFile = new File(path + fileName);
try {
//将上传的文件写入新图片
file.transferTo(targetFile);
} catch (IOException e) {
e.printStackTrace();
}
//获取上传文件对应的url
url = dirPath + fileName;
return url;
}
//用来定义上传文件想要的后缀
public enum FileFormatEnum {
jpg, jpeg, png, gif, bmp, tif, tiff, xls, xlsx
}
}