使用POST请求上传多部分文件

时间:2019-04-16 16:08:33

标签: python python-3.x request

我正在尝试使用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,并发生了相同的问题。

非常感谢您!

0 个答案:

没有答案