问题:如何使用 requests 库在 Python 中发送多部分表单数据?虽然我了解如何附加文件,但我正在努力将标准表单数据合并到此类请求中。
答案:
当文件发送时,请求会自动处理多部分表单数据指定参数,导致 multipart/form-data POST 请求而不是 application/x-www-form-urlencoded POST.
语法:
from requests import post response = post( url, files={ "form_field_name": "form_field_value", # No quotes needed for non-string values } )
示例:
response = post("http://httpbin.org/post", files={"foo": "bar"}) assert response.status_code == 200
高级控制:
使用元组进行自定义每个部分的文件名、内容类型和附加标头。元组组件包括:
示例:
files = {"foo": (None, "bar")} # No filename specified
有序多个字段:
使用元组列表对于有序或具有相同的多个字段name.
处理数据和文件:
同时使用数据和文件时,字符串数据参数优先。否则,数据和文件都会合并在请求中。
可选库:
requests-toolbelt 项目提供高级多部分支持,允许:
请求工具带示例:
import MultipartEncoder from requests_toolbelt fields = { "foo": b"bar", # Fields support bytes objects "spam": ("spam.txt", open("spam.txt", "rb"), "text/plain") # Stream files } mp_encoder = MultipartEncoder(fields) response = post( url, data=mp_encoder, headers={"Content-Type": mp_encoder.content_type} )
注意: 对于 requests-toolbelt 方法,不要使用 files= 参数作为MultipartEncoder 作为数据有效负载发布。
以上是如何在Python中使用文件和标准表单数据发送多部分表单数据?的详细内容。更多信息请关注PHP中文网其他相关文章!