你遇到的错误信息:
上传文件错误 44001
"errmsg": "empty media data"
是 微信企业号(企业微信)上传临时素材接口 常见错误之一。我们可以从 原因、排查、解决方法 三方面分析。
一、错误原因
44001: empty media data 表示:
上传的媒体文件数据为空,服务器没有收到文件内容
常见原因:
- 文件路径错误或文件不存在
- 你传给接口的文件路径错误,导致读取失败。
- Content-Type 或请求格式错误
- 企业微信要求 multipart/form-data 上传文件。
- 文件流为空
- 使用
requests或其他库时,open(file, 'rb')未正确传递。
- 使用
- 文件过大或被截断
- 企业微信对临时素材大小有限制:
- 图片:5MB
- 视频:10MB
- 文件:20MB
- 企业微信对临时素材大小有限制:
二、正确上传示例(Python)
使用 requests 库示例:
import requests
access_token = 'YOUR_ACCESS_TOKEN'
url = f'https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token={access_token}&type=file'
# 注意路径要正确,rb模式
files = {'media': open('example.pdf', 'rb')}
resp = requests.post(url, files=files)
print(resp.json())
✅ 注意事项:
media是接口规定的参数名,必须正确。- 文件路径一定要存在且可读。
- 使用
'rb'模式读取二进制文件。 - 确认文件大小不超过接口限制。
三、排查步骤
- 检查文件路径
import os print(os.path.exists('example.pdf')) # True - 打印文件内容长度
f = open('example.pdf', 'rb') content = f.read() print(len(content)) # 确保大于0 f.close() - 确认接口地址和 access_token 正确
- URL 拼接错误也会导致上传失败。
- 确认 Content-Type 是 multipart/form-data
requests库自动处理。- 手写请求时需注意
boundary。
四、常见坑
| 坑 | 说明 |
|---|---|
| 文件为空 | Python 打开文件忘记 'rb' |
| 文件不存在 | 路径写错、文件不在当前目录 |
| access_token 过期 | 企业微信 access_token 有效期 7200 秒 |
| 文件超大 | 按类型分开上传,遵守大小限制 |
| 错误字段名 | 接口要求 media,不能写成其他 |
五、总结
错误 44001
"empty media data"核心就是文件没有被服务器接收到
解决方法:
- 确认文件存在且路径正确
- 确认使用
'rb'打开文件 - 确认字段名
media与接口要求一致 - 文件大小符合限制
- access_token 有效
如果你需要,我可以帮你写一个 企业微信 Python 上传文件完整封装函数,自动处理:
- access_token 自动获取
- 文件大小检测
- 错误重试
- 返回 media_id
这样就不会再出现 44001 错误了。
你希望我直接写吗?