code: def upload(self, filePath, description=None):
          
          params = {
              "f" : "json"}
          if description is not None:
              params['description'] = str(description)
          url = self._url + "/upload"
          files = {}
          files['file'] = filePath
          return self._post(url=url,
                            param_dict=params,
                            files=files,
                            securityHandler=self._securityHandler,
                            proxy_url=self._proxy_url,
                            proxy_port=self._proxy_port)
docs: This operation uploads an item to the server. Each uploaded item is
          identified by a unique itemID. Since this request uploads a file,
          it must be a multi-part request as per IETF RFC1867.
          All uploaded items are subjected to the deletion rules set on the
          upload directory by the administrator of the server. Additionally,
          the administrator can explicitly delete an item as each uploaded
          item shows up in the list of all the uploaded items in Site
          Directory.
          Users can provide arguments to the upload operation as query
          parameters. The parameter details are provided in the parameters
          listed below.
          Inputs:
             filePath - The file to be uploaded.
             description	- An optional description for the uploaded item.