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

企业微信上传 带中文名称的 临时素材资源 报错 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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • flask+redis实现抢购(秒杀)功能

    今天面试了 一家非常高大上的公司,问了我关于redis的实用性问题,但是答的不是很好,所以下午通过再次学习 redis,实现相关实用性功能的一种。

    用户1558882
  • windows自动关机(任务计划程序 + exe文件)

    相关工具:win10系统中,使用windows自带的任务计划程序 和 windows自带的关机 exe文件 完成此需求

    用户1558882
  • pylint在pycharm的使用及pylint的配置

    pylint作为python代码风格检查工具,接近 PEP8风格,在使用此方法的过程中,发现不仅能让代码更加规范,优雅,更能 发现 隐藏的bug。

    用户1558882
  • file命令

    file命令用来探测给定文件的类型,file命令对文件的检查分为文件系统、魔法文件和语言检查3个过程。

    WindrunnerMax
  • Linux shell ${}简单用法

    Linux shell ${}简单用法 [转]http://linux.chinaunix.net/techdoc/develop/2007/05/05/9...

    汤高
  • Uploads-labs上传绕过(上)

    链接:https://pan.baidu.com/s/1lMRBVdQyFuKOgNlWPUoSSQ

    字节脉搏实验室
  • python3第七天(输入和输出)

    输出值的方式:1,表达式。2,print()函数。3,文件对象的write()函数

    py3study
  • 前端零基础入门:页面结构层HTML(2)

    达达前端
  • 文件系统之file结构体管理源码分析(基于linux1.2.13)

    操作系统为进程维护了打开的文件列表,每个进程维护了一个file数组字段(struct file * fd[NR_OPEN]);每个元素指向一个file结构体。每...

    theanarkh
  • uni app 零基础小白到项目实战

    若本号内容有做得不到位的地方(比如:涉及版权或其他问题),请及时联系我们进行整改即可,会在第一时间进行处理。

    达达前端

扫码关注云+社区

领取腾讯云代金券