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