当前位置: 首页 > 知识库问答 >
问题:

Python请求。post multipart/form-data[重复]

拓拔俊德
2023-03-14

我必须使用REST API将文件和信息上传到服务器。该API使用多部分形式,但我似乎无法正确使用它。

    null
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' :'Some desc',
  'release_notes_url':'Someurl.pdf',
  'zip_file': file
  }

response = requests.post(url, data=payload)

共有1个答案

冯哲彦
2023-03-14

这些文档有一个示例http://requests.readthedocs.org/en/latest/user/quickstart/#post-a-Multipart-encoded-file

您真的应该从简单的用例开始。

这个答案还解释了一起使用文件和数据。

这里有一个工作示例,适用于想要剪切-粘贴代码的人。httpbin返回一个json数据结构,描述您所做的请求。在本例中,您可以看到files包含发布的文件数据,form包含表单变量。headers显示它确实是一个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())
{u'args': {},
 u'data': u'',
 u'files': {u'file': u'some,data,to,send\nanother,row,to,send\n'},
 u'form': {u'description': u'Some desc', u'release_notes_url': u'Someurl.pdf'},
 u'headers': {u'Accept': u'*/*',
              u'Accept-Encoding': u'gzip, deflate',
              u'Content-Length': u'394',
              u'Content-Type': u'multipart/form-data; boundary=ebf9f03029db4c2799ae16b5428b06bd',
              u'Host': u'httpbin.org',
              u'User-Agent': u'python-requests/2.10.0'},
 u'json': None,
 u'origin': u'73.0.41.38',
 u'url': u'http://httpbin.org/post'}

享受吧!

 类似资料:
  • 如何在Python中用请求发送?如何发送文件,我明白了,但是如何用这种方法发送表单数据就不明白了。

  • 问题内容: 如何在python中发送带有请求的请求?我了解如何发送文件,但是通过这种方法如何发送表单数据尚不清楚。 问题答案: 基本上,如果你指定参数(字典),则将发送m而不是。你不限于在该词典中使用实际文件,但是: 可以让你知道你发布了哪些标题;在我们有: 更好的是,你可以通过使用元组而不是单个字符串或字节对象来进一步控制每个部分的文件名,内容类型和其他标题。该元组应该包含2到4个元素;文件名,

  • 任务是将请求发布到某些TTS(文本到语音)endpoint,并从响应中获取音频。endpoint位于专用网络中,因此我无法与您共享以直接测试,但我的问题不是特定于域的,我认为这是一个一般的http问题。 现有的工作curl和python2脚本如下: 请求。txt: python2脚本主要构造请求内容,然后调用http lib。请求('POST',uri,一些BytesIO(),标头)。 现在我想使

  • 但如果我将请求更改为“multipart/form-data”-春回错误400“bad request”: 为什么?也许我应该创造一些额外的豆子? PS:我需要“multipart/form-data”来与json对象一起发送文件。

  • 描述 (Description) Framework7几乎没有什么有用的方法,这使得使用表单变得容易。 下表显示了Framework7中使用的表单数据方法 - S.No 方法和描述 1 表格到JSON 您可以使用formToJSON()方法将所有表单字段值转换为JSON。 2 来自JSON的表格 您可以使用formFromJSON方法根据JSON数据填充表单。

  • 使用resteasy处理多部分/表单数据请求时,如何控制最大文件大小和/或最大请求大小? 我的代码如下所示: 通过Servlet,我可以使用MultipartConfig注释控制内容。 所以我在考虑绕过resteish并使用注入并在web.xml中配置我的servlet,但我不确定副作用。