gpt4 book ai didi

python - 通过 Python Requests 库发送文件与 Curl 有何不同?

转载 作者:太空宇宙 更新时间:2023-11-03 15:30:34 25 4
gpt4 key购买 nike

我需要通过 API 将文件上传到 Facebook。为此,我尝试使用 Curl 并且一切正常:

curl -F 'source=@/file.mp4' -F 'access_token=secret' https://graph.facebook.com/v4.0/act_000042/advideos

我也在尝试使用 Requests 在 Python 中实现相同的功能:

    import requests # requests==2.19.1

with open('/file.mp4', 'rb') as filecontent:
response = requests.post(
'https://graph.facebook.com/v4.0/act_000042/advideos',
data={
'access_token': 'secret',
},
files={
'source': filecontent,
}
)

我得到了同样的错误:{'error': {'code': 1, 'message': 'An unknown error occurred'}。所以 Curl 上传文件的方式和 Requests 上传文件的方式有一些区别。

有什么区别,我如何通过请求实现相同的下载?

最佳答案

好的,所以我发现区别在于 Content-Disposition。如果文件名包含 utf-8 符号且内容配置如下所示,则 Curl 不会添加任何内容:

内容配置:表单数据;名称=“来源”; filename="someunicodename..."

请求根据https://greenbytes.de/tech/webdav/rfc5987.html进行内容处理它看起来像:

内容配置:表单数据;名称=“来源”; filename*=utf-8''someunicodename ...

Facebook API 不理解 rfc5987 规范,并认为此内容处置不当。在文件名中仅使用 ASCII 符号确实解决了问题。

关于python - 通过 Python Requests 库发送文件与 Curl 有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58032252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com