You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python的requests模块发送base64解码图片的multipart表单请求

解决requests发送base64解码图片的multipart/form-data问题

我来帮你搞定这个问题!你当前的代码没法成功发送文件,主要是两个关键问题导致的,咱们一步步修正:

问题1:手动设置了错误的Content-Type

当你使用requests.post的files参数时,requests会自动生成正确的multipart/form-data头部,包括必不可少的boundary(分隔符)。如果你手动在headers里指定content-type: multipart/form-data,会覆盖掉自动生成的带boundary的头部,服务器根本没法正确解析你的表单数据。

所以第一步:删掉headers里的content-type设置。

问题2:files参数格式不正确

你只传了解码后的字节数据,但requests需要更多信息来构造正确的文件字段。正确的格式应该是一个元组,包含三个元素:(文件名, 文件字节数据, 内容类型),这样服务器才能知道这是个什么类型的文件。

比如如果是JPG图片,就指定文件名和image/jpeg类型。

修正后的完整代码

import base64
import requests
import json

# 用with语句安全读取文件,自动关闭资源
with open("template.txt", "r") as ref_path:
    # 读取base64字符串,去掉可能的换行/空格
    image_base64 = ref_path.read().strip()

# 解码base64得到图片字节
decoded_image = base64.b64decode(image_base64)

url = "https://example.com"
# 去掉手动设置的Content-Type
headers = {}
# 构造正确的files字典:元组包含文件名、字节数据、内容类型
files = {
    'file1': ('image.jpg', decoded_image, 'image/jpeg')
}

r = requests.post(url, headers=headers, files=files)
print(json.loads(r.text))

额外注意事项

  • 如果你的base64字符串来自文件,一定要用.strip()去掉可能存在的换行符或空格,否则解码会失败。
  • 用with语句处理文件是最佳实践,避免忘记关闭文件导致资源泄漏。
  • 内容类型(比如image/jpeg、image/png)要和你的图片类型匹配,如果不确定,可以用image/octet-stream作为通用二进制类型。

内容的提问来源于stack exchange,提问作者Nikita Aplin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:12:46