Опубликовать многочастную форму с несколькими загрузками файлов с использованием запросов Python - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть демографическая информация, извлеченная для некоторых людей в форме списка словарей Python (каждый диктант для отдельного человека). Также мне нужно загрузить документ, из которого я извлек данные (pdf / word). Я пробовал отправлять многокомпонентные формы, используя запросы Python, которые по какой-то причине не работают.

API ожидает два ключа 'файлы' и 'данные' 'files' - это список файловых объектов «data» - это список слов, который структурируется с использованием json.dumps (требования API)

pay_part= [{"umr":"","age":"","gender":"","first_name":"","middle_name":"","last_name":"","phone":"","address":"","admission_date":"","lab":"","discharge_date":"","ip_number":"","diagnosis":"","reason":"","treatment":"","medications":"","expired_date":"","instructions":"","review_date":"","procedure":"","notes":"","physician":"","filename":""},{"umr":"","age":"","gender":"","first_name":"","middle_name":"","last_name":"","phone":"","address":"","admission_date":"","lab":"","discharge_date":"","ip_number":"","diagnosis":"","reason":"","treatment":"","medications":"","expired_date":"","instructions":"","review_date":"","procedure":"","notes":"","physician":"","filename":""}]

multipart_data = MultipartEncoder(
fields={
        "file":[('file.docx',open('13427.docx', 'rb'),'text/plain'), 
        ('file.docx',open('13427.docx', 'rb'),'text/plain')],
         "payload": json.dumps(pay_part)
        }
                                  )

response = requests.post(url, data=multipart_data, headers={'Content-Type': 'multipart_data.content_type; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW', 'userid': sUserID,'metaid': metaid,'postman-token':postmanToken})
print(response.text)

При формировании многочастного объекта формы появляется ошибка "AttributeError: у объекта 'tuple' нет атрибута" кодировать "".

Я считаю, что это как-то связано с созданием файловых объектов в виде двоичного файла и сохранением в списке.

Заранее спасибо!

1 Ответ

0 голосов
/ 06 апреля 2019

Я заставил его работать!

Просто отправьте ваш объект json, используя аргумент 'data', и список ваших файловых объектов, используя аргумент 'files', как показано ниже.

Я удалил из заголовка аргумент «Content-Type»: «multipart_data.content_type;border = --- WebKitFormBoundary7MA4YWxkTrZu0gW '”

Запрос на публикацию был сделан как составное сообщение

Код: -

fields={'payload': json.dumps(pay_part)})

response = requests.post(url, data=fields,files =[('file',open('13385.docx', 'rb')),('file',open('13385.docx', 'rb'))],  headers={'userid': sUserID,'metaid': metaid,'postman-token':postmanToken})
print(response.text)

...