Python 发送文件到群聊
本文提供往钉钉群中用机器人推送文件消息的具体代码案例。
一、上传文件获取 mediaId
def upload_dingtalk_media(access_token, file_path, media_type="file"):
"""
上传文件到钉钉,返回 media_id
:param access_token: 钉钉 access_token
:param file_path: 本地文件路径
:param media_type: image / voice / video / file
:return: media_id or None
"""
url = "https://oapi.dingtalk.com/media/upload"
# MIME 类型映射
mime_map = {
'.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'.xls': 'application/vnd.ms-excel',
'.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'.doc': 'application/msword',
'.pdf': 'application/pdf',
'.txt': 'text/plain',
'.png': 'image/png',
'.jpg': 'image/jpeg',
'.jpeg': 'image/jpeg',
'.gif': 'image/gif',
'.amr': 'audio/amr',
'.mp4': 'video/mp4'
}
ext = os.path.splitext(file_path.lower())[1]
mime_type = mime_map.get(ext, 'application/octet-stream')
# 关键:只取文件名,不含路径 filename = os.path.basename(file_path)
filename = os.path.basename(file_path)
with open(file_path, ) f:
files = {: (filename, f, mime_type)}
data = {: media_type}
params = {: access_token}
response = requests.post(url, params=params, data=data, files=files)
result = response.json()
(, result)
result[] == :
result[]
:
(.(result[]))

