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

使用Python调用Confluence REST API上传附件遇415不支持媒体类型错误

Python调用Confluence REST API上传附件报415不支持媒体类型错误

问题详情

使用Python调用Confluence REST API上传附件时,持续收到415“不支持的媒体类型”错误。明确是Content-Type设置问题,但尝试多种类型后仍无法解决。

相关代码

import requests
print("start....................")
url = 'https://confluence.XXX.com/confluence/rest/api/content/' + str(108458915) + '/child/attachment/'
TOKEN = 'XXXXXXXX'
headers = {'X-Atlassian-Token': 'no-check',
        "Authorization": f"Bearer {TOKEN}"
        } #no content-type here!
file = 'my_file.jpeg'
content_type = 'multipart/form-data'
files = {'file': (file, open(file, 'rb'), content_type)}

print("request....................")

r = requests.post(url, headers=headers, files=files, verify='confluence.XXX.crt')
r.raise_for_status()

已尝试的Content-Type

  • image/jpeg
  • application/json
  • application/xml
  • application/octet-stream
  • multipart/form-data

错误信息

requests.exceptions.HTTPError: 415 Client Error: for url: https://confluence.XXX.com/rest/api/content/108458915/child/attachment/


解决方法

问题核心在于文件字段的Content-Type设置错误,以及对Confluence API请求格式的误解:

  1. 文件的Content-Type需匹配实际类型:上传的文件要使用对应格式的MIME类型(如JPEG用image/jpeg),而非multipart/form-data——后者是整个请求的Content-Type,requests会自动处理,无需手动指定。
  2. 确保请求参数符合API要求:Confluence允许添加可选的附件注释等参数,同时必须保留X-Atlassian-Token: no-check以绕过CSRF校验。

修改后的代码:

import requests

print("start....................")
# 简化URL拼接
url = f'https://confluence.XXX.com/confluence/rest/api/content/108458915/child/attachment/'
TOKEN = 'XXXXXXXX'
headers = {
    'X-Atlassian-Token': 'no-check',
    "Authorization": f"Bearer {TOKEN}"
}

file_path = 'my_file.jpeg'
# 为文件指定正确的MIME类型
files = {
    'file': (file_path, open(file_path, 'rb'), 'image/jpeg')
}
# 可选:添加附件描述
data = {'comment': '上传图片附件'}

print("request....................")

# 发送请求,可选携带data参数
r = requests.post(url, headers=headers, files=files, data=data, verify='confluence.XXX.crt')
r.raise_for_status()

关键注意事项

  • 禁止手动设置请求的Content-Type: multipart/form-data,否则会覆盖requests自动生成的带边界标识的请求头,导致Confluence无法解析请求。
  • 可通过mimetypes模块自动获取文件MIME类型(如mimetypes.guess_type(file_path)[0]),避免手动写错。
  • 确认Bearer Token权限足够上传附件,且Confluence实例的API路径无误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:55:13