首页 > 后端开发 > Python教程 > 如何在Python中使用文件和标准表单数据发送多部分表单数据?

如何在Python中使用文件和标准表单数据发送多部分表单数据?

Patricia Arquette
发布: 2024-12-25 07:51:12
原创
539 人浏览过

How to Send Multipart Form Data with Files and Standard Form Data in Python?

如何在 Python 中构造多部分表单数据请求

问题:如何使用 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 项目提供高级多部分支持,允许:

  • 从文件对象流式传输
  • 无默认文件名参数
  • 使用元组的自定义文件名、部分 MIME 类型和额外标头

请求工具带示例:

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板