From 2d40487b21b82191009a8609b5285a3d8884aad5 Mon Sep 17 00:00:00 2001 From: Gani Georgiev Date: Tue, 24 Jan 2023 12:40:49 +0200 Subject: [PATCH] [#1651] added more detailed file upload errors --- forms/validators/file.go | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/forms/validators/file.go b/forms/validators/file.go index d763adb0..d4976a11 100644 --- a/forms/validators/file.go +++ b/forms/validators/file.go @@ -22,7 +22,10 @@ func UploadedFileSize(maxBytes int) validation.RuleFunc { } if int(v.Size) > maxBytes { - return validation.NewError("validation_file_size_limit", fmt.Sprintf("Maximum allowed file size is %v bytes.", maxBytes)) + return validation.NewError( + "validation_file_size_limit", + fmt.Sprintf("Failed to upload %q - the maximum allowed file size is %v bytes.", v.OriginalName, maxBytes), + ) } return nil @@ -42,19 +45,24 @@ func UploadedFileMimeType(validTypes []string) validation.RuleFunc { return nil // nothing to validate } + baseErr := validation.NewError( + "validation_invalid_mime_type", + fmt.Sprintf("Failed to upload %q due to unsupported file type.", v.OriginalName), + ) + if len(validTypes) == 0 { - return validation.NewError("validation_invalid_mime_type", "Unsupported file type.") + return baseErr } f, err := v.Reader.Open() if err != nil { - return validation.NewError("validation_invalid_mime_type", "Unsupported file type.") + return baseErr } defer f.Close() filetype, err := mimetype.DetectReader(f) if err != nil { - return validation.NewError("validation_invalid_mime_type", "Unsupported file type.") + return baseErr } for _, t := range validTypes { @@ -63,9 +71,13 @@ func UploadedFileMimeType(validTypes []string) validation.RuleFunc { } } - return validation.NewError("validation_invalid_mime_type", fmt.Sprintf( - "The following mime types are only allowed: %s.", - strings.Join(validTypes, ","), - )) + return validation.NewError( + "validation_invalid_mime_type", + fmt.Sprintf( + "%q mime type must be one of: %s.", + v.Name, + strings.Join(validTypes, ", "), + ), + ) } }