首页 > 解决方案 > Python 请求使用 POST 上传文件

问题描述

我目前正在努力解决一个非常简单的问题,但无法详细发现问题。我想通过 上传文件requests.post,目前的方法有点像:

    fin = open(f"{path_dtl}{filename}.dtl", "rb")
    files = {"file": fin}

    headers = CaseInsensitiveDict()
    headers["Authorization"] = f"Bearer {auth_token}"
    headers["Content-Type"] = "application/octet-stream"
    headers["Content-Disposition"] = f"form-data;filename ='{filename}.dtl'"

    upload_dtl = requests.post(url, headers=headers, files=files)

结果是{'error': 'Invalid Media Type/Mime Type'}响应。是否需要以不同的方式打开 .dtl 文件?通过 Postman 使用此配置的请求可以正常工作,所以我想我错过了一个愚蠢的错误。提前致谢。

更新

好吧...对于任何有兴趣的人。问题的原因是我的 API 中的默认键值“文件”files = {"file": fin}不同。以下解决方法解决了我的问题。

with open(f"{path_dtl}{filename}.dtl", "rb") as f: files = f.read()
...
upload_dtl = requests.post(url, headers=headers, files=files)

标签: pythonapipostpython-requests

解决方案


您是否尝试过指定类型?你可以这样做:

files = {'file': ('aaa.csv', open('aaa.csv', 'rb'),'text/csv')}

推荐阅读