                 originalFilename: _originalFilename
                 setDestFolder: (destFolder) -> _ctrl.destFolder = destFolder
                 setFileName: (filename) -> _ctrl.filename = filename
+                setUploadUrl: (uploadUrl) -> _ctrl.uploadUrl = uploadUrl
+                setUploadMethod: (uploadMethod) -> _ctrl.uploadMethod = uploadMethod
 
             _doUpload = =>
                 @_upload(
                     file: file
                     filename: _ctrl.filename
                     destFolder: _ctrl.destFolder
+                    uploadUrl: _ctrl.uploadUrl or @uploadUrl
+                    uploadMethod: _ctrl.uploadMethod or @uploadMethod
                 )
 
             if @onBeforeUpload

            _prefixRand = "#{ Math.floor(Math.random() * 10000) }-#{ Date.now() }"
            return "#{ _prefixRand }-#{ name }"
        
        _upload: ({ file, filename, destFolder }) ->
            @_disabled = true

            func = if @awscredentials then '_uploadS3' else '_uploadWorker'
            this[func](
                file: file
                filename: filename
                destFolder: destFolder
            ).then(
                (data) => @_loadHandler(data) # success
                (err) => @_errorHandler(err) # error
                (data) => @onProgress?(data) # notify


            data =
                file: file
                url: uploadUrl
                method: uploadMethod
                name: filename
            worker.postMessage data

