diff --git a/s3/s3.go b/s3/s3.go
index 6dfe16dab43a9e3c4d7bfbb0df7556ead399028b..35d7a7fd7c93ecdb5c1681332662a5ef9d770695 100644
--- a/s3/s3.go
+++ b/s3/s3.go
@@ -32,6 +32,7 @@ type S3UploadSettings struct {
 	RetrieveSignedUrl     bool
 	ExpiryDuration        *time.Duration
 	AddContentDisposition bool
+	FileName              string
 }
 
 type MIMEType string
@@ -123,9 +124,15 @@ func (s SessionWithHelpers) UploadWithSettings(data []byte, bucket, fileName str
 
 	if settings.RetrieveSignedUrl {
 		var headers map[string]string
+
+		fileNameHeader := fileName
+		if settings.FileName != "" {
+			fileNameHeader = settings.FileName
+		}
+
 		if settings.AddContentDisposition {
 			headers = map[string]string{
-				"content-disposition": "attachment; filename=\"" + fileName + "\"",
+				"content-disposition": "attachment; filename=\"" + fileNameHeader + "\"",
 			}
 		}