Загрузка файла в Python через многочастный почтовый запрос - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь загрузить файл через API, который доступен через почтовый запрос. Я протестировал запрос в Paw, и он работает, однако в Python он возвращает ошибку 400.

import requests

file = ('test-video_1.mp4', open('/Volumes/GoogleDrive/My Drive/Code/Fuse-Qu/qu/uploads/test-video_1.mp4','rb'), 'video/mp4')

def upload_to_fuse(url):
    # Upload video to fuse
    # POST https://***.fuseuniversal.com/api/v4.2/contents/media

    try:
        response = requests.post(
            url="https://***.fuseuniversal.com/api/v4.2/contents/media",
            params={
                "auth_token": auth_token,
            },
            headers={
                "Content-Type": "multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__",
            },
            files={
                "name": "test api upload 11",
                "description": "this is a test of uploading a video via the api",
                "composite_attributes[type]": "Video",
                "community_ids": "24827",
                "composite_attributes[file]": ('test-video_1.mp4', open('/Volumes/GoogleDrive/My Drive/Code/Fuse-Qu/qu/uploads/test-video_1.mp4','rb'), 'video/mp4')
            },
        )
        print('Response HTTP Status Code: {status_code}'.format(
            status_code=response.status_code))
        print('Response HTTP Response Body: {content}'.format(
            content=response.content))
    except requests.exceptions.RequestException:
        print('HTTP Request failed')

upload_to_fuse('example.com')

Я думаю, что это связано с тем, как я ссылаюсь на фактический файл, но не уверен, что изменить. Я попытался использовать многочастный кодер requests-toolbelt, но с этим я получаю ту же ошибку.

...