     constructor: (settings, @__file) ->
       super
 
+      @fileName = @__file.name or 'original'
+      @__notifyApi()
+
+    setFile: (file) =>
+      if file
+        @__file = file
       @fileSize = @__file.size
-      @fileName = @__file.name or 'original'
       @fileType = @__file.type or 'application/octet-stream'
+      @__runValidators()
       @__notifyApi()
 
     __startUpload: ->
       if @fileSize >= @MP_MIN_SIZE and utils.abilities.blob
+        @setFile()
         @multipartUpload()
       else
         if @settings.imageReduce and utils.abilities.blob

                  df.notify(resizeShare + progress * (1 - resizeShare))
          df
        else
          @directUpload()

    __autoAbort: (xhr) ->

          utils.imageProcessor.reduceFile(@__file, @settings.imageReduce)
            .progress (progress) ->
              df.notify(progress * resizeShare)
            .done(@setFile)
            .fail (reason) =>
              @setFile()
              resizeShare = resizeShare * .1
            .always =>
              df.notify(resizeShare)
