             @_disabled = false
             @_createInput()
 
-        _uploadS3BySignedUrl: (file, uploadUrl) ->
+        _uploadS3BySignedUrl: (file, uploadUrl, cacheControl) ->
             defer = $q.defer()
 
             $http.put(
                 uploadUrl
                 file
-                headers: 'Content-Type': file.type
+                headers:
+                    'Content-Type': file.type
+                    'Cache-Control': cacheControl
                 uploadEventHandlers: {
                     progress: (data) ->
                         defer.notify Math.round (data.loaded / data.total) * 100

            fileParams =
                Key: filename
                ContentType: file.type
                Body: file
                ACL: "public-read"


            _prefixRand = "#{ Math.floor(Math.random() * 10000) }-#{ Date.now() }"
            return "#{ _prefixRand }-#{ name }"

        _upload: ({ file, filename, destFolder, uploadUrl, uploadMethod, signedUrl, cacheControl }) ->
            @_disabled = true

            func = if @awscredentials or signedUrl then '_uploadS3' else '_uploadWorker'
