   @param {String} opts.type - File mime-type
   @param {Object} opts.meta - File additional meta-data
   @param {String} opts.userId - UserId, default *null*
+  @param {String} opts.fileId - _id, default *null*
   @param {Function} callback - function(error, fileObj){...}
   @param {Boolean} proceedAfterUpload - Proceed onAfterUpload hook
   @summary Download file, write stream to FS and add to FilesCollection Collection

          userId:       opts.userId
          extension:    extension
          _storagePath: path.replace "#{nodePath.sep}#{opts.fileName}", ''
          
        if opts.fileId
          result._id = opts.fileId

        self.collection.insert result, (error, _id) ->
          if error

    check callback, Match.Optional Function
    check proceedAfterUpload, Match.Optional Boolean

    fileId   = opts.fileId or Random.id()
    FSName   = if @namingFunction then @namingFunction() else fileId
    fileName = if (opts.name or opts.fileName) then (opts.name or opts.fileName) else FSName

