Python requests.post multipart/form-data

8 浏览
0 Comments

Python requests.post multipart/form-data

我需要使用一个REST API将文件和信息上传到服务器。该API使用multipart/form-data,但是我似乎无法正确使用它。

根据API文档,我使用以下信息。

表单参数:

  • description – 分发的简短描述。
  • release_notes_url – 指向发布说明的URL。
  • zip_file – 包含分发文件的ZIP文件。

示例请求:

POST /api/v1/distribution HTTP/1.1

Host: api.company.onbe

Authorization: t=...

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryZayrf7leHxinyQsX

------WebKitFormBoundaryZayrf7leHxinyQsX

Content-Disposition: form-data; name="release_notes_url"

http://releases/3.0.0/release_notes_3_0_0.pdf

------WebKitFormBoundaryZayrf7leHxinyQsX

Content-Disposition: form-data; name="description"

This is the new distribution!

------WebKitFormBoundaryZayrf7leHxinyQsX

Content-Disposition: form-data; name="zip_file"; filename="BackEnd-3.0.0.zip"

Content-Type: application/x-zip-compressed

------WebKitFormBoundaryZayrf7leHxinyQsX--

我尝试了几种方法,例如以下代码,但我不断收到服务器返回的“错误请求”错误。

import requests
file = open('BackEnd-3.0.0.zip', 'r').read()
url = 'api.company.onbe/api/v1/distribution'
payload = {
  'description' :'一些描述',
  'release_notes_url':'一些url.pdf',
  'zip_file': file
  }
response = requests.post(url, data=payload)

0
0 Comments

Python的requests库提供了一个方便的方法来发送POST请求并上传multipart/form-data格式的数据。然而,有时候在使用这个功能时可能会遇到一些问题。下面我们来看一下问题的出现原因以及解决方法。

问题的出现原因:

在使用requests库的post方法发送multipart/form-data请求时,可能会遇到一些问题。比如,文件没有正确地上传到服务器,或者数据没有正确地被解析。这些问题通常是由于请求的参数没有被正确地配置所导致的。

解决方法:

为了正确地发送multipart/form-data请求,我们需要确保参数被正确地设置。下面是一个示例代码,展示了如何正确地使用requests库来发送multipart/form-data请求:

import requests
from pprint import pprint
url = 'http://httpbin.org/post'
files = {'file': ('report.csv', 'some,data,to,send\nanother,row,to,send\n')}
response = requests.post(url, data={
  'description' :'Some desc',
  'release_notes_url':'Someurl.pdf'
}, files=files)
pprint(response.json())

在这个示例中,我们首先导入了requests库和pprint模块。然后,我们定义了要发送的请求的URL和文件。接下来,我们使用requests的post方法发送POST请求,并将文件和其他表单数据作为参数传递给post方法。最后,我们使用pprint函数打印出服务器返回的JSON数据。

通过这个示例,我们可以看到,请求的参数被正确地设置为multipart/form-data格式,并成功地上传到了服务器。服务器返回的JSON数据中,'files'字段包含了上传的文件数据,'form'字段包含了表单数据,'headers'字段说明了请求确实是multipart/form-data格式的。

通过这种方式,我们可以确保使用requests库发送multipart/form-data请求时,参数被正确地配置,从而避免一些常见的问题。希望这篇文章对你有所帮助!

0