@@ -24,7 +24,7 @@ public class FileUploadRequestValidator implements Validator {
|
|||||||
|
|
||||||
validateType(request.getFileType(), errors);
|
validateType(request.getFileType(), errors);
|
||||||
validateFileName(request.getFileName(), errors);
|
validateFileName(request.getFileName(), errors);
|
||||||
validateExtension(request.getExtension(), request.getFileName(), errors);
|
validateExtension(request.getExtension(), request.getFileType(), errors);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateType(String fileType, Errors errors) {
|
private void validateType(String fileType, Errors errors) {
|
||||||
@@ -58,20 +58,13 @@ public class FileUploadRequestValidator implements Validator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateExtension(String fileType, String fileName, Errors errors) {
|
private void validateExtension(String extension, String fileType, Errors errors) {
|
||||||
if (fileType == null || fileType.isBlank()) {
|
if (extension == null || extension.isBlank()) {
|
||||||
errors.rejectValue("fileType", "fileType.required", "File type is required");
|
errors.rejectValue("fileType", "fileType.required", "File type is required");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String fileExtension = getFileExtension(fileName);
|
if (extension.contains(".")) {
|
||||||
|
|
||||||
if (fileExtension == null || fileExtension.isBlank()) {
|
|
||||||
errors.rejectValue("fileName", "fileName.invalid.extension", "File must have an extension");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fileExtension.contains(".")) {
|
|
||||||
errors.rejectValue("extension", "extension.required", "Extension contains comma");
|
errors.rejectValue("extension", "extension.required", "Extension contains comma");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -79,16 +72,10 @@ public class FileUploadRequestValidator implements Validator {
|
|||||||
try {
|
try {
|
||||||
FileType parsedType = FileType.valueOf(fileType.toUpperCase());
|
FileType parsedType = FileType.valueOf(fileType.toUpperCase());
|
||||||
|
|
||||||
if (!supportedFileTypes.contains(parsedType)) {
|
if (!parsedType.supportsExtension(extension)) {
|
||||||
errors.rejectValue("fileType", "fileType.unsupported",
|
|
||||||
"Unsupported file type. Supported types: " + supportedFileTypes);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!parsedType.supportsExtension(fileExtension)) {
|
|
||||||
errors.rejectValue("fileName", "fileType.extension.mismatch",
|
errors.rejectValue("fileName", "fileType.extension.mismatch",
|
||||||
String.format("File extension '%s' does not match file type '%s'. Allowed extensions for %s: %s",
|
String.format("File extension '%s' does not match file type '%s'. Allowed extensions for %s: %s",
|
||||||
fileExtension, parsedType.getDisplayName(), parsedType.getDisplayName(),
|
extension, parsedType.getDisplayName(), parsedType.getDisplayName(),
|
||||||
parsedType.getAllowedExtensions()));
|
parsedType.getAllowedExtensions()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,9 +86,6 @@ public class FileUploadRequestValidator implements Validator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String getFileExtension(String fileName) {
|
private String getFileExtension(String fileName) {
|
||||||
if (fileName == null || fileName.lastIndexOf('.') == -1) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
|
return fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user