docs: def up(self, fileobj_or_path, filename=None, upload_callback=None):
          'Upload a file to current folder and return the new JFSFile'
          close_on_done = False
  
          if isinstance(fileobj_or_path, six.string_types):
              filename = filename or os.path.basename(fileobj_or_path)
              fileobj_or_path = open(fileobj_or_path, 'rb')
              close_on_done = True
          elif hasattr(fileobj_or_path, 'read'):  # file like
              pass
          else:
              # TODO: handle generators here?
              raise JFSError("Need filename or file-like object")
  
          if filename is None:
              if hasattr(fileobj_or_path, 'name'):
                  filename = os.path.basename(fileobj_or_path.name)
              else:
                  raise JFSError("Unable to guess filename")
  
          log.debug('.up %s ->  %s %s', repr(fileobj_or_path), repr(self.path), repr(filename))
          r = self.jfs.up(posixpath.join(self.path, filename), fileobj_or_path,
              upload_callback=upload_callback)
          if close_on_done:
              fileobj_or_path.close()
          self.sync()
          return r