Commit 7e5dfadf authored by daniel's avatar daniel

fix(upload): 上传文件校验

parent 14fe1379
...@@ -77,13 +77,13 @@ public class CommonController { ...@@ -77,13 +77,13 @@ public class CommonController {
} }
String extension = originalFilename.substring(lastIndex).toLowerCase(); String extension = originalFilename.substring(lastIndex).toLowerCase();
// 检查文件扩展名是否允许 // 检查文件扩展名是否允许
// if (!ALLOWED_FILE_TYPES.containsKey(extension)) { if (!ALLOWED_FILE_TYPES.containsKey(extension)) {
// return Result.fail().setMsg("不允许上传该文件类型,请检查文件"); return Result.fail().setMsg("不允许上传该文件类型,请检查文件");
// } }
// // 检查文件魔数 // 检查文件魔数
// if (!checkFileMagicNumber(file.getBytes(), extension)) { if (!checkFileMagicNumber(file.getBytes(), extension)) {
// return Result.fail().setMsg("文件类型与扩展名不符,请检查文件"); return Result.fail().setMsg("文件类型与扩展名不符,请检查文件");
// } }
String objectName = UUID.randomUUID() + extension; String objectName = UUID.randomUUID() + extension;
if (!Objects.equals(folder, "")) { if (!Objects.equals(folder, "")) {
objectName = folder + "/" +cmptId+ "/" + objectName; objectName = folder + "/" +cmptId+ "/" + objectName;
...@@ -105,12 +105,17 @@ public class CommonController { ...@@ -105,12 +105,17 @@ public class CommonController {
try { try {
String originalFilename = file.getOriginalFilename(); String originalFilename = file.getOriginalFilename();
assert originalFilename != null; assert originalFilename != null;
// 检查文件名中是否包含点号
int lastIndex = originalFilename.lastIndexOf("."); int lastIndex = originalFilename.lastIndexOf(".");
if (lastIndex == -1) { if (lastIndex == -1) {
// 如果没有后缀名,直接返回报错信息
return Result.fail().setMsg("上传的文件没有后缀名,请检查文件"); return Result.fail().setMsg("上传的文件没有后缀名,请检查文件");
} }
String extension = originalFilename.substring(lastIndex).toLowerCase();
if (!ALLOWED_FILE_TYPES.containsKey(extension)) {
return Result.fail().setMsg("不允许上传该文件类型,请检查文件");
}
if (!checkFileMagicNumber(file.getBytes(), extension)) {
return Result.fail().setMsg("文件类型与扩展名不符,请检查文件");
}
String objectName = fileName; String objectName = fileName;
if (!Objects.equals(folder, "")) { if (!Objects.equals(folder, "")) {
objectName = folder + "/" + fileName; objectName = folder + "/" + fileName;
...@@ -128,24 +133,26 @@ public class CommonController { ...@@ -128,24 +133,26 @@ public class CommonController {
@ApiOperation(value = "参赛声明上传") @ApiOperation(value = "参赛声明上传")
public Result<?> uploadClaimer(@RequestPart @RequestParam("file") MultipartFile file,@RequestParam(value = "gCmptId") Integer gCmptId) { public Result<?> uploadClaimer(@RequestPart @RequestParam("file") MultipartFile file,@RequestParam(value = "gCmptId") Integer gCmptId) {
try { try {
// 检查文件大小是否超过1MB long maxFileSize = 5 * 1024 * 1024;
long maxFileSize = 5 * 1024 * 1024; // 1MB
if (file.getSize() > maxFileSize) { if (file.getSize() > maxFileSize) {
return Result.fail().setMsg("上传文件大小不能超过5MB"); return Result.fail().setMsg("上传文件大小不能超过5MB");
} }
String originalFilename = file.getOriginalFilename(); String originalFilename = file.getOriginalFilename();
if (originalFilename == null || originalFilename.isEmpty()) { if (originalFilename == null || originalFilename.isEmpty()) {
return Result.fail().setMsg("文件名不能为空"); return Result.fail().setMsg("文件名不能为空");
} }
assert originalFilename != null; assert originalFilename != null;
// 检查文件名中是否包含点号
int lastIndex = originalFilename.lastIndexOf("."); int lastIndex = originalFilename.lastIndexOf(".");
if (lastIndex == -1) { if (lastIndex == -1) {
// 如果没有后缀名,直接返回报错信息
return Result.fail().setMsg("上传的文件没有后缀名,请检查文件"); return Result.fail().setMsg("上传的文件没有后缀名,请检查文件");
} }
String extension = originalFilename.substring(lastIndex).toLowerCase();
if (!ALLOWED_FILE_TYPES.containsKey(extension)) {
return Result.fail().setMsg("不允许上传该文件类型,请检查文件");
}
if (!checkFileMagicNumber(file.getBytes(), extension)) {
return Result.fail().setMsg("文件类型与扩展名不符,请检查文件");
}
String objectName = "micro/" +gCmptId+ "_cmptId/mianze.png"; String objectName = "micro/" +gCmptId+ "_cmptId/mianze.png";
String filePath = aliOssUtil.upload(file.getBytes(), objectName); String filePath = aliOssUtil.upload(file.getBytes(), objectName);
log.info("文件上传名: {} 保存的文件名:{}", originalFilename,filePath); log.info("文件上传名: {} 保存的文件名:{}", originalFilename,filePath);
...@@ -160,24 +167,26 @@ public class CommonController { ...@@ -160,24 +167,26 @@ public class CommonController {
@ApiOperation(value = "选号背景上传") @ApiOperation(value = "选号背景上传")
public Result<?> uploadSelectMarkNoBg(@RequestPart @RequestParam("file") MultipartFile file,@RequestParam(value = "gCmptId") Integer gCmptId,@RequestParam(value = "roadId") String roadId) { public Result<?> uploadSelectMarkNoBg(@RequestPart @RequestParam("file") MultipartFile file,@RequestParam(value = "gCmptId") Integer gCmptId,@RequestParam(value = "roadId") String roadId) {
try { try {
// 检查文件大小是否超过1MB long maxFileSize = 5 * 1024 * 1024;
long maxFileSize = 5 * 1024 * 1024; // 1MB
if (file.getSize() > maxFileSize) { if (file.getSize() > maxFileSize) {
return Result.fail().setMsg("上传文件大小不能超过5MB"); return Result.fail().setMsg("上传文件大小不能超过5MB");
} }
String originalFilename = file.getOriginalFilename(); String originalFilename = file.getOriginalFilename();
if (originalFilename == null || originalFilename.isEmpty()) { if (originalFilename == null || originalFilename.isEmpty()) {
return Result.fail().setMsg("文件名不能为空"); return Result.fail().setMsg("文件名不能为空");
} }
assert originalFilename != null; assert originalFilename != null;
// 检查文件名中是否包含点号
int lastIndex = originalFilename.lastIndexOf("."); int lastIndex = originalFilename.lastIndexOf(".");
if (lastIndex == -1) { if (lastIndex == -1) {
// 如果没有后缀名,直接返回报错信息
return Result.fail().setMsg("上传的文件没有后缀名,请检查文件"); return Result.fail().setMsg("上传的文件没有后缀名,请检查文件");
} }
String extension = originalFilename.substring(lastIndex).toLowerCase();
if (!ALLOWED_FILE_TYPES.containsKey(extension)) {
return Result.fail().setMsg("不允许上传该文件类型,请检查文件");
}
if (!checkFileMagicNumber(file.getBytes(), extension)) {
return Result.fail().setMsg("文件类型与扩展名不符,请检查文件");
}
String objectName = "micro/"+ gCmptId+"_cmptId/" + gCmptId+ "_"+roadId+".png"; String objectName = "micro/"+ gCmptId+"_cmptId/" + gCmptId+ "_"+roadId+".png";
String filePath = aliOssUtil.upload(file.getBytes(), objectName); String filePath = aliOssUtil.upload(file.getBytes(), objectName);
log.info("文件上传名: {} 保存的文件名:{}", originalFilename,filePath); log.info("文件上传名: {} 保存的文件名:{}", originalFilename,filePath);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment