我正在尝试使用Python上传文件,但无法表示与CURL中相同的代码。我有一个CURL命令,可以通过以下调用正常工作:
curl -X POST
https://my_domain/workers
-H 'Cache-Control: no-cache'
-H 'Content-Type: multipart/form-data'
-H 'content-type: multipart/form-data; boundary=----0987'
-F myId=1234
-F file=@<FILE_PATH>
我的Python代码是这样的:
headers = {
'Cache-Control': 'no-cache',
'Content-Type': 'multipart/form-data',
'content-type': 'multipart/form-data; boundary=----0987'
}
files = {
'myId': workspace_id,
'file': open(<FILE_PATH>, 'rb')
}
res = requests.post('https://my_domain/workers', headers=headers, files=files)
但是当我用Python调用时,我从API收到了一个结果,告诉我myId参数丢失了,但是相同的调用在CURL中仍然有效。有人知道吗?
使用https://httpbin.org/post进行测试,我得到以下结果:
{
"args": {},
"data": "",
"files": {
"myId": "1234",
"file": "<file content>"
},
"form": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "23430",
"Content-Type": "multipart/form-data; boundary=<random number>",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.19.1"
},
"json": null,
"origin": "<IP>",
"url": "https://httpbin.org/post"
}
但是这样,我从响应中收到错误500。很奇怪,因为CURL命令确实按预期工作。我还尝试从调用中删除标头dic,并发生了相同的问题。
非常感谢您!