code: def upload(self, dest_dir, file_handler, filename, callback=None, **kwargs):
          
  
          params = {
              'path':str(dest_dir)+"/"+str(filename)
          }
  
          tmp_filename = ''.join(random.sample(string.ascii_letters, 10))
          files = {'file': (tmp_filename, file_handler)}
  
          url = 'https://{0}/rest/2.0/pcs/file'.format(BAIDUPCS_SERVER)
          return self._request('file', 'upload', url=url, extra_params=params,
                               files=files, callback=callback, **kwargs)
docs: 上传单个文件（<2G）.
  
          | 百度PCS服务目前支持最大2G的单个文件上传。
          | 如需支持超大文件（>2G）的断点续传，请参考下面的“分片文件上传”方法。
  
          :param dest_dir: 网盘中文件的保存路径（不包含文件名）。
                              必须以 / 开头。
  
                              .. warning::
                                  * 注意本接口的 dest_dir 参数不包含文件名，只包含路径
                                  * 路径长度限制为1000；
                                  * 径中不能包含以下字符：``\\\\ ? | " > < : *``；
                                  * 文件名或路径名开头结尾不能是 ``.``
                                    或空白字符，空白字符包括：
                                    ``\\r, \\n, \\t, 空格, \\0, \\x0B`` 。
          :param file_handler: 上传文件对象 。(e.g. ``open('foobar', 'rb')`` )
  
                              .. warning::
                                  注意不要使用 .read() 方法.
          :type file_handler: file
          :param callback: 上传进度回调函数
              需要包含 size 和 progress 名字的参数
  
          :param filename:
  
          :return: requests.Response 对象
  
              .. note::
                  返回正确时返回的 Reponse 对象 content 中的数据结构
  
                  {"path":"服务器文件路径","size":文件大小,"ctime":创建时间,"mtime":修改时间,"md5":"文件md5值","fs_id":服务器文件识别号,"isdir":是否为目录,"request_id":请求识别号}