Watson Discovery Service Python добавить документ Ошибка: недопустимый тип содержимого.Ожидаемые 'multipart / form-data' - PullRequest
0 голосов
/ 19 сентября 2018

Импорт Watson Developer Cloud Python SDK

from watson_developer_cloud import DiscoveryV1

Получить pdf от Slack doc_url, который является частным URL-адресом

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

discovery = DiscoveryV1(
username=DS_USERNAME,
password=DS_PASSWORD,
version="2017-10-16"
)

Добавление PDF-документа в экземпляр Discovery

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

Прокомментированы примеры кода разработчикав Github.

https://github.com/watson-developer-cloud/python-sdk/blob/master/examples/discovery_v1.py

1 Ответ

0 голосов
/ 19 сентября 2018

О, мой.Это жалкое сообщение об ошибке.

В вызове discovery.add_document() отсутствует параметр file.Можете ли вы попробовать добавить 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'])

Для справки: - это код Python , который работает и выполняет что-то очень похожее на то, к чему вы стремитесь.

...