企业微信上传 带中文名称的 临时素材资源 报错 44001:empty media data

错误原因:urllib3的老版本bug,卸载掉 requests,urllib3,从新安装最新版的requests(此包内部依赖urllib3);

我从新安装的是 requests==2.22.0 及  urllib3==1.25.3 包

 

上传 临时资源的代码如下(此代码支持 上传的文件 和 用户收到显示的文件 都为中文的 情况):

    def upload_temp_file(self, token, userid, file_abs_path, file_type, file_name):
        """
        上传 临时素材资源
        接口文档地址:https://work.weixin.qq.com/api/doc#90000/90135/90253

        :param token: 企业微信的token
        :param userid: 用户企业微信id
        :param file_abs_path: 需要上传文件的绝对路径
        :param file_type: 文件类型
        :param file_name: 用户收到文件时显示的文件名
        :return:bool,str
        """

        # 校验 file_type
        support_file_type = ['image', 'voice', 'video', 'file']
        if file_type not in support_file_type:
            log.error(f'error file type,only support {support_file_type}')
            return False, None

        # 文件名为中文的bug解决方法:https://blog.csdn.net/u013250071/article/details/82493892
        file_upload_result = requests.post(
            'https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token={}&type={}'.format(token, file_type),
            files={'media': (file_name, open(file_abs_path, 'rb'), '', {})}
        )

 

 

企业微信发送结果为:

 

 

总结:

1.对接第三方接口,通过代码对接时出现问题,就用 postman等 工具进行对接,如果使用工具对接没有问题,极大可能是 代码问题,不是第三方平台垃圾;

2.别忘了 考虑可能 是 使用的开源包的bug,如果 百度或谷歌 关键字  (python 企业微信 上传临时素材 44001 中文 empty media data)找不到相关答案;就试着用其他关键字进行查找 如 (python requests post 中文文件);

3.实在找不到bug,就把用的包 卸载 从装最新的,毕竟可能会 之前使用的是老版本的未修复bug的包

 

 

相关连接:

https://blog.csdn.net/u013250071/article/details/82493892

posted @ 2019-08-06 19:40  RGC  阅读(1886)  评论(0编辑  收藏  举报