CURL转Python Requests运行报OSError 22错误该如何解决?
错误原因
- 文件参数解析错误:自动转换工具错误识别了curl的
-F参数规则,原指令中file=@"image-api.jpg";filename="image_app.png"是指本地读取image-api.jpg文件,上传时指定服务端接收的文件名为image_app.png,工具误将整段字符串作为本地文件名传入open()方法,导致系统找不到对应路径抛出异常。 - 请求头冗余错误:手动添加的
content-type: multipart/form-data头会覆盖requests自动生成的带boundary分隔符的请求头,导致服务端无法正确解析上传的文件内容,即使修复文件路径也会请求失败。
修复后完整代码
import requests headers = { '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_app.png', open('image-api.jpg', 'rb')), } response = requests.post('https://adsapi.snapchat.com/v1/media/577e68af-0b9b-4ae6-8bbb-22ac6910557f/upload', headers=headers, files=files) # 可打印返回值排查后续请求问题 print(response.status_code) print(response.text)
注意:运行代码前请确认
image-api.jpg文件和test.py在同一目录下,否则需要传入文件的绝对路径。
内容的提问来源于stack exchange,提问作者Support EazyApps
相关产品推荐
相关产品推荐

