python上传文件到钉钉群,文件名字包含中文,上传失败

踩坑记录,需求是,将文件发送到钉钉群。查看钉钉官方文档,需要三步骤。
第一步,去钉钉开发者平台创建应用,获取appkey以及appSecret.
使用这俩参数,get请求: https://oapi.dingtalk.com/gettoken 地址, 并在连接后拼接上appkey=“创建应用得到的”&appsecret=“创建应用得到的”。请求会返回access_token。
第二步 拿到返回的access_token,请求上传媒体文件到钉钉服务器的接口,post请求:https://oapi.dingtalk.com/media/upload 地址,url后需要拼接上 access_token=“获取的access_token”&type=file

 files = {'media': open(file, 'rb')}
 data = {'access_token': access_token,
         'type': 'file'}
 response = requests.post(url, files=files, data=data)

返回的response中会包含media_id。
第三步 拿到第二步返回的media_id,进行第三步发送到钉钉群的方法。此方法需要一个chatid。方法如下:
进入https://open.dingtalk.com/tools/explorer/jsapi?id=10303,左侧栏选择chooseChat,手机钉钉扫右侧二维码,登录钉钉开发者后台之后corpId默认填充不用填,isAllowCreateGroup和filterNotOwnerGroup选False,右侧点运行调试,在手机上选中接受文件的群获取chatid
最后post请求:f’https://oapi.dingtalk.com/chat/send?access_token={access_token}'.

header = {
        'Content-Type': 'application/json'
    }
    data = {'access_token': access_token,
            'chatid': chatid,
            'msg': {
                'msgtype': 'file',
                'file': {'media_id': media_id}
            }}
    r = requests.request('POST', url, data=json.dumps(data), headers=header)

最后说一下遇到的坑,在上传文件的时候,发现有的文件可以上传,有的不能,最后发现,文件名称包含中文的就不可以。于是升级了requests以及urllib包到最新版本后,可以成功上传了。
pip install --upgrade urllib3
pip install --upgrade requests

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值