Ibm cloud Watson发现服务Python添加文档错误:内容类型无效。预期';多部分/表单数据'; 导入Watson开发者云Python SDK 从Slack doc_url(私有url)获取pdf 将文件临时保存在云文件系统中 创建发现实例 在发现实例中添加pdf文档 日志文件 开发人员代码示例在Github中被注释掉。

Ibm cloud Watson发现服务Python添加文档错误:内容类型无效。预期';多部分/表单数据'; 导入Watson开发者云Python SDK 从Slack doc_url(私有url)获取pdf 将文件临时保存在云文件系统中 创建发现实例 在发现实例中添加pdf文档 日志文件 开发人员代码示例在Github中被注释掉。,ibm-cloud,watson-discovery,Ibm Cloud,Watson Discovery,噢,天哪。这是一个糟糕的错误信息 调用discovery.add_document()缺少的是文件参数。你能试着像这样添加file=fileinfo吗: with open(filepath, 'rb') as fileinfo: add_doc = discovery.add_document(ENVIRONMENT_ID, COLLECTION_ID,

噢,天哪。这是一个糟糕的错误信息

调用
discovery.add_document()
缺少的是
文件
参数。你能试着像这样添加
file=fileinfo
吗:

with open(filepath, 'rb') as fileinfo:
  add_doc = discovery.add_document(ENVIRONMENT_ID,
                                   COLLECTION_ID,
                                   file=fileinfo,
                                   file_content_type=r.headers['content-type'])
作为参考,这是有效的,并正在做一些非常类似的事情,它看起来像你的目标

r = requests.get(doc_url, headers={'Authorization': 'Bearer {}'.format(slack_token) })
logging.debug("read_pdf headers %s " %r.headers )
logging.debug("read_pdf content-type %s " %r.headers['content-type'] )
with open(doc_name, 'wb' ) as f:
  f.write(r.content)
filepath = os.path.join(os.getcwd(), '.', doc_name )
logging.debug('filepath %s' %filepath)
logging.debug('filepath assertion %s' %os.path.isfile(filepath) )
discovery = DiscoveryV1(
username=DS_USERNAME,
password=DS_PASSWORD,
version="2017-10-16"
)
with open(filepath, 'rb') as fileinfo:
  add_doc = discovery.add_document(ENVIRONMENT_ID, COLLECTION_ID, file_content_type=r.headers['content-type'])
read_pdf headers {'Content-Type': 'application/pdf', 'Content-Length': '149814'
WatsonApiException: Error: Invalid Content-Type. Expected 'multipart/form-data', got 'application/octet-stream', Code: 400 , X-dp-watson-tran-id: gateway02-732476861 , X-global-transaction-id: ffea405d5ba1ad632ba8b5bd
with open(filepath, 'rb') as fileinfo:
  add_doc = discovery.add_document(ENVIRONMENT_ID,
                                   COLLECTION_ID,
                                   file=fileinfo,
                                   file_content_type=r.headers['content-type'])