diff --git a/s3/s3.go b/s3/s3.go
index 0275af6d85a21c01e94d94d17a8a7d5190ef4928..109ef48b8a9a0485803148a843c8239b2805f178 100644
--- a/s3/s3.go
+++ b/s3/s3.go
@@ -158,10 +158,16 @@ func (s SessionWithHelpers) UploadWithSettingsRevised(data []byte, bucket string
 
 	uuidString := ""
 	if settings.InsertUUID {
-		uuidString = uuid.New().String()
+		uuidString = fmt.Sprintf("_%s", uuid.New().String())
 	}
 
-	fullFileName = fmt.Sprintf("%s%s_%s.%s", settings.FilePath, settings.FileName, uuidString, settings.FileExt)
+	if len(settings.FileExt) > 0 {
+		if settings.FileExt[0] != '.' {
+			settings.FileExt = fmt.Sprintf(".%s", settings.FileExt)
+		}
+	}
+
+	fullFileName = fmt.Sprintf("%s%s%s%s", settings.FilePath, settings.FileName, uuidString, settings.FileExt)
 
 	// Uploaded objects require a key
 	if fullFileName == "" {