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

使用Python调用WhatsApp Cloud API上传媒体时遇文件类型错误

解决WhatsApp媒体上传至Facebook Graph API的400错误

问题分析

Postman测试成功但Python requests调用报错,核心原因是requests默认的文件上传格式未正确传递文件元信息(文件名、Content-Type),导致API无法识别文件类型。

解决方案

1. 显式指定文件元信息

在files参数中,不要仅传递文件对象,而是通过元组显式指定文件名、文件对象、Content-Type,确保API能正确识别文件属性。

2. 规范文件路径拼接

使用os.path.join处理路径,避免Windows系统下的转义字符问题,保证文件路径正确。

3. 用with语句管理文件资源

避免文件句柄泄漏,同时确保文件读取状态正确。

修正后的代码

import requests
import os

# 拼接正确的文件路径
file_path = os.path.join(current, "default.png")
url = f"https://graph.facebook.com/v15.0/{phone_id}/media"
headers = {"Authorization": f"Bearer {auth_token}"}

with open(file_path, "rb") as file_obj:
    # 显式指定文件的文件名、对象和Content-Type
    files = {
        "file": ("default.png", file_obj, "image/png")
    }
    data = {
        "messaging_product": "whatsapp",
        "type": "image/png"
    }
    upload_media = requests.post(url, data=data, files=files, headers=headers)

# 查看响应结果
print(upload_media.json())

关键说明

  • 文件元信息的作用:Postman会自动为上传文件添加filename和Content-Type头,而requests仅传文件对象时可能缺失这些信息,导致API无法识别文件类型。显式指定后,请求格式和Postman完全一致。
  • 类型匹配:data中的type字段必须和文件实际类型严格对应,比如PDF文件需设为application/pdf,JPEG图片设为image/jpeg。
  • 路径处理:os.path.join会自动适配Windows/macOS/Linux的路径分隔符,避免手动拼接时的转义错误。

内容的提问来源于stack exchange,提问作者Fath-Likki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:10:28