【问题标题】:Curl works but python requests is failing to upload an imageCurl 有效,但 python 请求无法上传图像
【发布时间】:2019-02-04 06:14:26
【问题描述】:
curl 'https://example.com/v2/' -F 'master=@test.jpg;type=image/JPEG' -H 'X-Generate-Renditions: all' -H 'X-Create-Asset-Sync: 1' -H 'Authorization: Bearer xyz' -H 'X-Read-Meta: none'

工作顺利,但不是下面的python请求代码返回404。

import requests

headers = {
    'X-Generate-Renditions': 'all',
    'X-Create-Asset-Sync': '1',
    'Authorization': 'Bearer xyz',
    'X-Read-Meta': 'none'
}

with open('test.jpg', 'rb') as f:
    response = requests.post('https://example.com/v2/', headers=headers, files={'test.jpg': f})
    print(response.status_code)

返回 404。

我做错了什么?

【问题讨论】:

    标签: python linux curl python-requests http-post


    【解决方案1】:

    您没有使用正确的字段名称发送文件。更改以下部分

    files={'test.jpg': f}
    

    files={'master': ('test.jpg', f, 'image/JPEG')}
    

    查看http://docs.python-requests.org/en/master/user/quickstart/#post-a-multipart-encoded-file的正确用法。

    【讨论】:

    • 仍然是 404。有什么方法可以获得更多信息吗?开启调试什么的?
    • 奇怪,这是一个文档化的 API 吗?您可以启用登录requests,请参阅this answer
    • 它没有记录,但我猜我在传递授权承载令牌的方式上做错了。
    • 奇怪的是它与curl 一起工作。确保您传递完全相同的参数。还可以尝试通过添加 User-Agent 标头来伪造用户代理。
    猜你喜欢
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    相关资源
    最近更新 更多