           extension: data.extension
       _downloadRoute:  data._downloadRoute or @downloadRoute
       _collectionName: data._collectionName or @collectionName
+    
+    #Optional fileId
+    if data.fileId
+       ds._id = data.fileId;
+    
     @_updateFileTypes ds
     ds._storagePath = data._storagePath or @storagePath(_.extend(data, ds))
     return ds

          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


    self      = @
    opts     ?= {}
    fileId    = opts.fileId or Random.id()
    FSName    = if @namingFunction then @namingFunction() else fileId
    pathParts = url.split('/')
    fileName  = if (opts.name or opts.fileName) then (opts.name or opts.fileName) else pathParts[pathParts.length - 1] or FSName
