我正在尝试使用工具将 CURL 命令转换为 python 代码。
这是工具。
卷曲命令:
curl -X POST -H 'content-type: multipart/form-data' -F 'file=@"image-api.jpg";filename="image_app.png"' -H "Authorization: Bearer eyJpc3MiOiJodHRwczpcL1wvYWNjb3VudHMuc25hcGNoYXQuY29tXC9hY2NvdW50c1wvb2F1dGgyXC90b2tlbiIsInR5cCI6IkpXVCIsImVuYyI6IkExMjhDQkMtSFMyNTYiLCJhbGciOiJkaXIiLCJraWQiOiJhY2Nlc3MtdG9rZW4tYTEyOGNiYy1oczI1Ni4wIn0..s2rMbO22nSfSqhuBwq68QA.Gu0MBlHpBXEdIS89YQSFrgS6nwtZT3NCax004UcjcFzOT_-ioXwoh8mwEethNTmVfY-F21CZ8ceTeAZQbhYiFqN5cWrnk2WX_KIw8Uq-D1jbrwrhqbFshzUMXqCAoJIe9DLzZYXmYdia1l9mMMdiSyyep9dFGzwOgB_FdGDU-fUIuEGEZyXdeyCM_4TDf652JPOHc_ldZmHivpmfa9QacMXjJxrVN0Y10m0_FC6p_q7WPdyVtUYSk1EMmHjIPNUSvRTSjNPLHhfH_WXNWcVPjy07p3bwNYc2uj4Woy-VYci51M4vuWRZrAMs6GO4eQeAu4Z7rKIc_Zhu4CBZcU1yqg4joQFnWUXRi_a_fq1SeeQYrFC_NFX5jgsz7ElCvPd2s0s0rs6FdBTNDPDdM-o2W35a8Ew46KRHrOT2FN6yJyVVI_hrz0hBajsC-BU4u2i90KlV0SKQOOR19t5RuGLJbLXxRdVL_s172CdQwHUejhjuusq_r0JmxtwCVBCEzMcOzdJ-2u7PPEZbsAiVpdS9MJdDQyVQOJ_e0UlIN6qNKhFSKS9-88mFvDS4MmFdenfacBbGJycjgNx_TgIjnpbk2KAYe2-_mKbMkOctxUA-3ZAfpjMF0UUO46csIJEpmmwmUOp5qt4jz2EbSZjvjmyPIxXF38Qv3g-HGBPUQF8vvx0BHd-WkB6Hs86jjXBlplUD8AgIo-YNoIeH4-2umCw6b-DuGFuG3ZTcyzM8P1lrPCg.SOqmXSkT1dNBh4QknnuBXQ" https://adsapi.snapchat.com/v1/media/577e68af-0b9b-4ae6-8bbb-22ac6910557f/upload
Python代码:
import requests
headers = {
'content-type': 'multipart/form-data',
'Authorization': 'Bearer eyJpc3MiOiJodHRwczpcL1wvYWNjb3VudHMuc25hcGNoYXQuY29tXC9hY2NvdW50c1wvb2F1dGgyXC90b2tlbiIsInR5cCI6IkpXVCIsImVuYyI6IkExMjhDQkMtSFMyNTYiLCJhbGciOiJkaXIiLCJraWQiOiJhY2Nlc3MtdG9rZW4tYTEyOGNiYy1oczI1Ni4wIn0..s2rMbO22nSfSqhuBwq68QA.Gu0MBlHpBXEdIS89YQSFrgS6nwtZT3NCax004UcjcFzOT_-ioXwoh8mwEethNTmVfY-F21CZ8ceTeAZQbhYiFqN5cWrnk2WX_KIw8Uq-D1jbrwrhqbFshzUMXqCAoJIe9DLzZYXmYdia1l9mMMdiSyyep9dFGzwOgB_FdGDU-fUIuEGEZyXdeyCM_4TDf652JPOHc_ldZmHivpmfa9QacMXjJxrVN0Y10m0_FC6p_q7WPdyVtUYSk1EMmHjIPNUSvRTSjNPLHhfH_WXNWcVPjy07p3bwNYc2uj4Woy-VYci51M4vuWRZrAMs6GO4eQeAu4Z7rKIc_Zhu4CBZcU1yqg4joQFnWUXRi_a_fq1SeeQYrFC_NFX5jgsz7ElCvPd2s0s0rs6FdBTNDPDdM-o2W35a8Ew46KRHrOT2FN6yJyVVI_hrz0hBajsC-BU4u2i90KlV0SKQOOR19t5RuGLJbLXxRdVL_s172CdQwHUejhjuusq_r0JmxtwCVBCEzMcOzdJ-2u7PPEZbsAiVpdS9MJdDQyVQOJ_e0UlIN6qNKhFSKS9-88mFvDS4MmFdenfacBbGJycjgNx_TgIjnpbk2KAYe2-_mKbMkOctxUA-3ZAfpjMF0UUO46csIJEpmmwmUOp5qt4jz2EbSZjvjmyPIxXF38Qv3g-HGBPUQF8vvx0BHd-WkB6Hs86jjXBlplUD8AgIo-YNoIeH4-2umCw6b-DuGFuG3ZTcyzM8P1lrPCg.SOqmXSkT1dNBh4QknnuBXQ',
}
files = {
'file': ('"image-api.jpg";filename', open('"image-api.jpg";filename', 'rb')),
}
response = requests.post('https://adsapi.snapchat.com/v1/media/577e68af-0b9b-4ae6-8bbb-22ac6910557f/upload', headers=headers, files=files)
但是,当我尝试使用 python test.py 运行 python 代码时(其中 test.py 有上面的代码)
我收到以下错误:
$ python test.py
Traceback (most recent call last):
File "test.py", line 9, in <module>
'file': ('"image-api.jpg";filename', open('"image-api.jpg";filename', 'rb')),
OSError: [Errno 22] Invalid argument: '"image-api.jpg";filename'
我不知道我在这里做错了什么。如果有人能帮助解决这个问题,我将不胜感激。
顺便说一句,我指的是这个link中的文档。 (上传媒体 - 图片部分)
页面不理想,有时无法正确转换某些选项。
我无法测试它,但通常你应该只使用
'image-api.jpg'
而不使用;filename
。
并使用
' '
或 " "
,但不能同时使用。
files = {
'file': ('image-api.jpg', open('image-api.jpg', 'rb')),
}
最终您可能需要
/full/path/to/image-api.jpg
中的open()
顺便说一句:
您可以将
curl
和requests
发送到页面https://httpbin.org/post,它会发回您的所有信息,然后您可以比较curl
和requests
是否发送相同的数据.
编辑:
用页面测试
httpbin.org
我发现你必须删除标题'content-type'
。选项 files=...
将自动添加此选项并发送文件。如果我手动添加此标头,则它不会发送文件